Ban*_*tal 4 iphone double types
我有一个应用程序,我知道双倍的范围,**1.7E +/- 308 (15 digits).**但在我的应用程序中,我必须将文本框的值设置为100.0我的代码是
double value=[strPrice doubleValue]/100.0;
NSString *stramoount=[@"" stringByAppendingFormat:@"%0.2f",value ];
Run Code Online (Sandbox Code Playgroud)
当我将34901234566781212除以100它给我349012345667812.12但是当我键入 349012345667812124并且除以100它给我100它它给我3490123456678121.00 这是错误的我是否更改数据类型或如何更改我的代码
电话号码349012345667812124有18位小数.该double格式仅略微提供的精度小于16张十进制数(实际数量不是一个整数,因为格式的二进制数位不直接correspont到十进制的).因此,完全可以预期最后的2或3位数字无法准确表示,并且double在任何计算发生之前,当文字"349012345667812124"被解析为格式时,它已经发生.
您获得预期结果的数字为34901234566781212,这意味着什么; 它恰好足够接近double格式可以表示的最接近的值.
要避免此问题,请使用NSDecimal或NSDecimalNumber类型.