在我的课程中,我被告知:
连续值大约在内存中表示,因此使用浮点数进行计算会产生舍入误差。这些是位模式的微小差异。因此,
e==f
如果e
和f
为浮点,则测试是不安全的。
指的是Java。
这是真的?我已经将比较语句与double
s和float
s一起使用,并且从未遇到过舍入问题。我从来没有读过类似的教科书。虚拟机肯定占了这一切吗?
是真的。
这是如何在内存中以有限数量的位表示浮点值的固有限制。
例如,该程序显示“ false”:
public class Main {
public static void main(String[] args) {
double a = 0.7;
double b = 0.9;
double x = a + 0.1;
double y = b - 0.1;
System.out.println(x == y);
}
}
通常,您不决定与’==’进行精确比较,而是询问数字是否足够“接近”:
System.out.println(Math.abs(x - y) < 0.0001);
问题内容: 我遇到了(我怀疑是)舍入错误。 我有一个字符串,我正尝试将其转换为双精度型。我已经可以使用函数将其拆分,并且可以很好地捕获基数和指数值。但是,一旦我尝试将它们适当地相乘,就会得到以下结果:。 这是我的相关代码: 那么,如何避免舍入错误?(我有多种方法可以解决此问题,但如果有可能,那么我想知道如何解决该问题) 谢谢。 问题答案: 您不需要拆分它,可以很好地处理这些数字。 看到?有用!
0.05返回0.0 0.15返回0.2 0.25返回0.2 0.35返回0.4 0.45返回0.4 为什么会出现这种情况?更重要的是,我如何才能得到正确的值(舍入0.25时为0.3,舍入0.45时为0.5)?
问题内容: 我不知道这是否是一个明显的错误,但是在运行Python脚本以更改模拟参数时,我意识到缺少和的结果。在调查中,我注意到以下Python代码: 生成的相同文件的增量= 0.28和0.29,与.57和.58相同,原因是python返回float(29)/ 100为。但这不是系统错误,从某种意义上说,它并不是每个整数都发生的。因此,我创建了以下Python脚本: 而且我看不到发生这种舍入错误的
问题内容: 这是小代码来说明我所看到的 打印: 我要打印 我需要做什么? 问题答案: 在使用之前添加以下行: 查看其他舍入模式,看看哪种最适合您。 注意:此方法仅在JDK 1.6或更高版本中有效
问题内容: 参见以下代码: 当我在Firefox 3.5中看到控制台时,jsonParsed的值为: 即数字是四舍五入的。尝试了不同的值,结果相同(四舍五入)。 我也没有四舍五入规则。714341252076979136舍入为714341252076979200,而714341252076979135舍入为714341252076979100。 编辑: 请参阅下面的第一条评论。显然,这与JSON无
问题内容: 我的BinvA矩阵的(1,1)条目得到一个非常奇怪的值,我 只是想将B矩阵求逆,并进行(B ^ -1)A乘法。 我知道,当我手动进行计算时,我的(1,1)应该为0,但我得到1.11022302e-16。我该如何解决?我知道浮点数不能完全准确地表示出来,但是为什么这会给我这么不准确的响应,而不是四舍五入,有什么办法可以使我更准确呢? 她是我的代码: 我的印刷声明: 问题答案: 计算逆时,