OStack程序员社区-中国程序员成长平台

标题: objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:50
标题: objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入

在将包含两位标准十进制数字(例如 8.20)的 NSString 转换为 NSNumber 时,我(不时)得到额外的数字和通过 NSLog 记录结果或将其保存在 Core Data 中(作为 float 或 double )时的奇怪舍入行为,例如8.20 -> 8.199999999999999。

这是我用来转换数字的代码:

 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
 [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
 [numberFormatter setMaximumFractionDigits:5];
 NSNumber *num = [numberFormatter numberFromString:str];

我不明白为什么转换为 NSNumber 会弄乱数字。我的代码有什么问题?



Best Answer-推荐答案


这就是 float 和 double 在 C/Objective-C(以及许多其他语言)中的行为方式。例如,当您输入 python 8.0 时,结果将是 8.000000000001。我推荐使用 NSScanner将它们转换为原始数字类型( double 、 float )。

关于objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11316318/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4