[声明]所有代码均来自Joshua Bloch和Neal Gafter所著的<Java解惑>一书,本人仅因学习需要摘抄和注释,感谢二位作者的知识分享.
代码:
public class Change {
public static void main(String args[]) {
System.out.println(2.00 - 1.10);
}
}
结果:
0.8999999999999999
分析:
在JAVA中二进制浮点数并不能完全精确的表示小数,我们看到的浮点数的实际值是无限接近字面值的数值.
例如:1.10字面值是1.10,但是这个浮点数在计算机中的实际值可能是1.11111111111.
所以计算的结果可能没达到我们的预期.
所以在计算浮点数运算时通常使用精度更高更准确的BigDecimal类.
代码:
public class Change {
public static void main(String args[]) {
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
}
}
结果:
0.90
注意在实例化BigDecimal时,如果用浮点数做参数来实例化,并不能得到正确结果,因为浮点数的实际值并非预期值.
解决方案代码:
public class Change {
public static void main(String args[]) {
System.out.println(new BigDecimal(2.00).subtract(new BigDecimal(1.10)));
}
}
结果:
0.899999999999999911182158029987476766109466552734375
分享到:
相关推荐
**谜题2:找零时刻** - **描述**:程序意图计算找零所需的最小硬币数量,但结果却不是预期的最优化解。 - **解惑**:该问题的核心在于理解硬币面额的组合方式。在某些情况下,选择最大面额的硬币不一定能得出最少...
接下来是“谜题2:找零时刻”。这可能是一个涉及编程逻辑的问题,尤其是在处理货币计算时常见的精度问题。在Java中,使用double或float类型进行货币计算可能会导致精度损失,因为它们使用浮点数表示,而非精确的十...
本篇将主要针对“Java解惑”这一主题,探讨其中的两个重要谜题:谜题1 - 奇数性与谜题2 - 找零时刻。这两个问题触及到Java语言的基础知识,包括逻辑运算、类型转换以及数学操作。 首先,我们来看谜题1 - 奇数性。在...
- **谜题2**:找零时刻。该谜题涉及到了Java中双精度浮点数(`double` 类型)的精度问题。 - **问题描述**:假设 Tom 在一家汽车配件店购买了一个价值 $1.10 的火花塞,他使用了一张 $2 的钞票进行支付。代码尝试...
谜题2:找零时刻 在这个问题中,Tom用一张2美元的钞票支付1.10美元的商品,我们期望程序能返回0.90美元的找零。然而,当使用`double`类型进行计算时,由于浮点数的二进制表示不精确,结果可能会出现意料之外的误差。...
**谜题2:找零时刻** 问题在于尝试使用`double`类型进行货币计算,这是一个常见的陷阱。代码如下: ```java public class Change{ public static void main(String args[]){ System.out.println(2.00 - 1.10); ...
**标题**: 找零时刻 **描述**: 本节探讨了在Java中进行浮点数运算时可能遇到的精度问题。 **详细解释**: 在实际应用中,比如财务计算场景,我们需要确保计算结果的准确性。然而,由于浮点数(如 `float` 和 `...
文档中提到的找零时刻问题便是因浮点数精度问题引发的典型案例。在使用`System.out.println(2.00-1.10);`时,期望输出的是0.90,但实际上输出的是0.***。这是因为1.1这个数值无法精确地以double类型表示,计算结果是...
谜题2:找零时刻 此谜题可能涉及到数学运算和类型转换。在Java中,计算找零通常需要计算总金额与支付金额的差值,然后将结果转换为合适的货币单位。需要注意的是,Java中的浮点数运算可能会有精度问题,因此在处理...
接下来是“找零时刻”的谜题。在计算找零时,使用`double`类型可能会导致精度问题。由于二进制浮点数无法精确表示某些十进制数,如0.1,所以在进行浮点数运算时,可能会得到预期之外的结果。在例子中,`2.00 - 1.10`...
谜题2:找零时刻 谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12...
#### 找零时刻:浮点数的精度问题 接下来,我们探讨一个涉及货币计算的谜题。假设Tom在购买价值$1.10的商品时,使用了$2.00的纸币,理论上应找回$0.90。然而,在实际编程中,当我们尝试计算这个找零值时,却遇到了...
#### 二、找零时刻:货币计算的陷阱 **谜题背景** 本谜题探讨了货币计算中的一个常见问题:如何准确地计算找零金额。这个问题涉及到Java中双精度浮点数(`double`类型)的表示和计算精度问题。 **谜题描述** 谜题...