0%

数值计算

四舍五入保留两位小数

NSString *strOdds = [NSString stringWithFormat:@"%.2f", odds]; //保留两位小数
该方法会四舍五入保留两位小数,不足两位小数后面补0.如果想在四舍五入时去掉小数点后多余的0,可使用下面的方法:

1
2
3
4
5
6
7
8
9
10
11
- (NSString *)roundingAfterPoint:(NSInteger)position roudingMode:(NSRoundingMode)roundingMode
{
NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:roundingMode scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];

float f_price = self.floatValue;
NSDecimalNumber *ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:f_price];
NSDecimalNumber *roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];

NSString *rs = [NSString stringWithFormat:@"%@",roundedOunces];
return rs;
}

调用:
NSString *rs = [self roundingAfterPoint:2 roudingMode:NSRoundPlain];

在进行浮点型数值计算时最好统一类型,比如全部统一为float计算,或全部为double型计算.否则可能会出现误差,导致计算不一致.

浮点型数值取整

  • round:如果参数是小数,则求本身的四舍五入。
  • ceil:如果参数是小数,则求最小的整数但不小于本身.
  • floor:如果参数是小数,则求最大的整数但不大于本身.

Example:如果值是3.4的话,则round 3.000000, ceil 4.000000, floor 3.00000

另外,强制取整(int)3.4 = 3,直接丢弃小数位仅保留整数位,类似于floor函数.

觉得文章有帮助可以打赏一下哦!