将int转换为双精度小数点

依他鲁司

在调试窗口中,当我输入以下命令时:

po 1912/10.0

输出为191.19999999999999

我真正想得到的是191.2

为什么会发生这种情况,如何将int精确地转换为double?

亚伦·布拉格(Aaron Brager)

每个程序员应该了解的浮点运算中

为什么我的数字(例如0.1 + 0.2)加起来不是一轮好0.3,而是得到一个奇怪的结果,例如0.30000000000000004?

因为在内部,计算机使用的格式(二进制浮点数)根本无法准确表示一个数字,例如0.1、0.2或0.3。

编译或解释代码时,“ 0.1”已经四舍五入为该格式的最接近的数字,即使在计算之前,也会产生较小的舍入误差。

这就是为什么程序员说您应该只将钱存储为整数的原因。例如int cents = 1995;而不是float dollars = 19.95

如果您的应用程序不需要100%精确(例如,如果您正在计算屏幕坐标,半透明性或颜色),则只需将浮点数的格式四舍五入为1或2个小数位即可:

double someValue = 1912/10.0;
NSLog(@"2 decimals: %.2f", someValue);
NSLog(@"0 decimals: %.0f", someValue);

此代码将输出:

2位小数:191.20
0位小数:191

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在将双精度值转换为字符串后从双精度值中删除小数点

将双精度小数点后移

C#如何将双精度数转换为带小数点和千位的字符串

如何检测小数点应转换为整数还是双精度?

当双精度值有小数点时,双精度值被转换为字符串值

将小数转换为双精度

将字符串列转换为以句点为小数点和千位分隔符的双精度

Java Seperate方法将双输入转换为小数点后两位

如何转换称为“ q”的双精度值并显示小数点之前/之后的值?

转换带有两个小数点的双精度数

C ++将变量小数转换为双精度值

Python,将坐标度转换为小数点

将双精度舍入到小数点后两位,显示“#.00”而不是“#.0”

Gson:将双精度值格式设置为小数点后4位

将int转换为double时,如何显示小数和小数点后两位?

转换为2个小数点

将双精度取整至小数点后一位(舍去小数位)

用Java将除法的双精度结果转换为int

将数组int值转换为双精度

如何将字符串转换为小数点后3位的小数?

将文本框中的小数转换为带有2个小数点的变量

将双精度对转换为双精度数组

将双精度型转换为不带小数位的字符串的最佳方法

如何将双精度数转换为两位小数?

使用逗号分隔符将双精度转换为2个小数位

Pentaho将字符串转换为带小数点的整数

使用stod()将小数点后的字母转换为字符串也不例外

将 Numpy Float 转换为 String 会导致多余的小数点

将逗号小数点分隔符转换为数据框内的点