gpt4 book ai didi

Java、Float.parseFloat()、System.out.printf()不一致

转载 作者:行者123 更新时间:2023-12-01 06:35:16 28 4
gpt4 key购买 nike

考虑以下 Java 代码:

String input = "33.3";
float num = Float.parseFloat(input);
System.out.printf("num: %f\n",num);

为什么上面代码的输出是这样的

编号:33.299999

不应该吗

数字:33.300000

如果有人能向我解释这一点,我将非常感激。

最佳答案

您是浮点错误的受害者。在基数 2 中,33.3从技术上讲,是一个重复的二进制(类似于重复的十进制),如写为m/nmn是整数且 gcd(m,n)=1n 的质因数不是 2 素因数的子集。这也意味着它不能写成有限项的和 m*(2^n)哪里mn是整数。

类似的例子发生在 7/6 上。以 10 为基数。

   _
1.16

变成了

1.16666667

按字面意思读,不等于 7/6。

关于Java、Float.parseFloat()、System.out.printf()不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702169/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com