美文网首页
iOS 保留一位有效数字 float精度丢失

iOS 保留一位有效数字 float精度丢失

作者: 点亮橘子树 | 来源:发表于2019-01-22 09:25 被阅读26次

 大家都会在开发中遇到, 一个 float或者 double 类型的小数上, 有时候会有一个精度的丢失, 造成数据不准确. 尤其是在涉及到一些支付的项目, 都要求比较精确, 所以来说一说NSDecimalNumber, 顺便说一下保留小数的方法,NSDecimalNumberHandle

黄色标记处。改一下 参数即可
RoundingMode: 小数保留的类型

根据官方文档说明, 枚举值分析:

NSRoundPlain,  四舍五入

NSRoundDown,    只舍不入

NSRoundUp,      只入不舍

NSRoundBankers

原代码如下。:

+(NSString *)notRounding:(float)price afterPoint:(int)position{

    NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];

    NSDecimalNumber *ouncesDecimal;

    NSDecimalNumber *roundedOunces;

    ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];

    roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];

    return [NSString stringWithFormat:@"%@",roundedOunces];

}

相关文章

网友评论

      本文标题:iOS 保留一位有效数字 float精度丢失

      本文链接:https://www.haomeiwen.com/subject/jplsnxtx.html