请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
因此,当我使用Doubles在Java中添加或减去时,它会给我带来奇怪的结果.这里有一些:
如果我补充0.0 + 5.1
,它给了我5.1
.那是对的.
如果我添加5.1 + 0.1
,它会给我5.199999999999
(重复9
s 的数量可能会关闭).那是错的.
如果我减去4.8 - 0.4
,它会给我4.39999999999995
(再次,重复9
s可能会关闭).那是错的.
起初我认为这只是添加带小数值的双打的问题,但我错了.以下工作正常:
5.1 + 0.2 = 5.3
5.1 - 0.3 = 4.8
Run Code Online (Sandbox Code Playgroud)
现在,添加的第一个数字是保存为变量的double,尽管第二个变量从a中获取文本JTextField
.例如:
//doubleNum = 5.1 RIGHT HERE
//The textfield has only a "0.1" in it.
doubleNum += Double.parseDouble(textField.getText());
//doubleNum = 5.199999999999999
Run Code Online (Sandbox Code Playgroud)