Tag:

Java:如何计算代表金钱的double值中包含的小数位数?

对于使用Java制作的更改应用程序,我在计算double值中的小数位数时遇到问题。 double值表示money,因此我的所有操作都必须在对原始值进行操作后将12.58之类的双值存储为12.5797886。 为了抵消这种影响,我选择使用String,就像这样: String amountString = String.valueOf(amount); String decimals = amountString.substring(amountString.indexOf(‘.’) + 1); 所以,如果金额是12.58,我获得58而不是57978 …… 我的问题涉及大量,就像12849561476651.2501535这样的金额在科学记数法中转换,同时存储在一个双。 所以金额的双倍值将是1.284956147665125E13 不幸的是,我不能只计算点后的数字,并在位置13之后取一切。在这样的情况下,原始小数2501535在第三个位置包含0,位置13之后的结果四舍五入到25。 我找到了一些解决方案,对于想要在没有科学记数法的情况下打印小数值的人,他们使用.printf(%f,…)或类似的东西。 但是,如果可能的话,我如何计算双值中包含的小数位数并处理存储问题和科学记数法? 我必须能够知道是否有超过2个小数。 此外,如果你有一个非常高性能的解决方案,即使它是一个复杂或奇怪的解决方案,它会很棒。 谢谢