【发布时间】:2014-05-05 18:46:18
【问题描述】:
我有一个按钮,当我按下它时,我希望它将标签(从 0.0 开始)更新为 + 0.1
我得到以下信息:
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.79999999999999999
0.89999999999999999
0.99999999999999999
1.09999999999999999
我的代码是:
double Number = Double.parseDouble(txtNumber.getText());
double Generator = 0.1;
Number = (Number + Generator);
txtNumber.setText(Number + "");
我知道计算机处理数字的方式并不完全是 0.3,而更像是 0.2999999... 我只是想要一种对数字进行四舍五入的方法,这样我就可以轻松地将 0.1(to)0.9 加在一起而无需大量小数位。
我已经尝试添加
Math.round((Number + Generator) * 100) / 100;
虽然它向下舍入为 0,因此标签不会更新。
【问题讨论】:
-
使用
String.format生成数字的String版本。 -
(顺便说一句,大多数 Java 编码标准模仿 C 标准并使用前导小写字母作为变量名,保留大写作为类名。)
-
请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic..(以及 SO 周围的数百个重复项)。
标签: java swing floating-point decimal