菜鸟教程小白 发表于 2022-12-12 21:50:01

objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入


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

<p>这是我用来转换数字的代码:</p>

<pre><code> NSNumberFormatter *numberFormatter = [ init];
;
;
NSNumber *num = ;
</code></pre>

<p>我不明白为什么转换为 NSNumber 会弄乱数字。我的代码有什么问题?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这就是 float 和 double 在 C/Objective-C(以及许多其他语言)中的行为方式。例如,当您输入 python 8.0 时,结果将是 8.000000000001。我推荐使用 <a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSScanner_Class/Reference/Reference.html" rel="noreferrer noopener nofollow">NSScanner</a>将它们转换为原始数字类型( double 、 float )。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11316318/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11316318/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入