我想将双倍(例如价值为7.90的价格)转换为无损失的整数!我正在制作一个处理钱的程序,我必须将它们作为双打输入,然后将它们转换为整数,以便我可以处理它们,例如当我有7.90欧元并且我想将它转换为美分它将显示为789美分而不是790美分!请帮帮我:)提前谢谢
答案 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。
另一种可能性:
在计算大量资金时,如果它不符合整数(甚至可能不是长整数),则使用BigInteger
或BigDecimal
类。这是与钱一起工作时通常的,可能更好的方法。精度和位数是任意的,但处理时间和内存使用量可能更高。