将双精度转换为整数

时间:2015-11-27 12:29:59

标签: java integer rounding

我想将双倍(例如价值为7.90的价格)转换为无损失的整数!我正在制作一个处理钱的程序,我必须将它们作为双打输入,然后将它们转换为整数,以便我可以处理它们,例如当我有7.90欧元并且我想将它转换为美分它将显示为789美分而不是790美分!请帮帮我:)提前谢谢

2 个答案:

答案 0 :(得分:0)

More specificaly the problem is that if it was a double it would originaly save 59.999999 instead of 60

数据类型双变量不能精确存储某些值,60是其中一个值,因此您应该a)使用不同的数据类型(float遇到相同的问题),或b)说明使用你的支票容差。

在您的情况下,您的变量显示59.9999999只是因为它最接近的数据类型double可以达到60。

答案 1 :(得分:0)

一种可能的解决方案:

根本不要使用浮点数。不是说1 Euro = 100 * 0.01 Euro,而是使用Cents计算:1 Euro = 100 Cents。如果你需要欧元,用Cents作为整数计算并除以100。

另一种可能性:

在计算大量资金时,如果它不符合整数(甚至可能不是长整数),则使用BigIntegerBigDecimal类。这是与钱一起工作时通常的,可能更好的方法。精度和位数是任意的,但处理时间和内存使用量可能更高。