Java - 如何从整数(Money)中获取double

时间:2011-10-13 08:01:57

标签: java algorithm currency

我得到了:

int number = 1255; -> //It could also be 125(1€25Cent) or 10(10Cent) or 5(5Cent)

public double toMoney(int number)
{
...
}

作为回报,我想要双号: 12.55 或输入:10然后: 00.10

我知道我可以使用Modulo这样的事情:

1255%100 ..得到55 ..但如何做到12和最后,如何 形成一个双重?

6 个答案:

答案 0 :(得分:5)

该方法不应该存在,因为它无法给出正确的结果。

因为在内部,double是一种格式(二进制浮点),无法准确表示像0.1,0.2或0.3 这样的数字。有关详细信息,请阅读Floating-Point Guide

如果您需要小数,则输出格式应为BigDecimalString

答案 1 :(得分:4)

应该通过使用NumberFormat类来完成打印金额的方式!
看看这个例子:

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.FRANCE);
format.setCurrency(Currency.getInstance("EUR"));
System.out.println( format.format(13234.34) );

打印此输出:

13 234,34 €

您可以尝试不同的区域设置和货币代码。请参阅文档:http://download.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html

答案 2 :(得分:3)

如果我正确理解你的问题,你可能只想这样做:

return (double)number / 100.;

虽然有一句警告: 由于四舍五入问题,您不应该使用浮点数。

如果您只想以货币格式打印数字,这是一种100%安全的方法:

System.out.print((number / 100) + ".");
int cents = number % 100;
if (cents < 10)
    System.out.print("0");
System.out.println(cents);

这可能会更好地简化......当然你可以选择BigDecimal,但IMO用大锤粉碎蚂蚁。

答案 3 :(得分:2)

public double toMoney(int number)
{
  return number / 100.0;
}

如果您正在处理货币金额,请记住,当您将数字转换为double时,可能会出现一些精度损失。

答案 4 :(得分:2)

public double toMoney(int number)
{
return number / 100.0
}

诀窍是使用100.0而不是100来强制java使用双重除法。

答案 5 :(得分:2)

public double toMoney(int number)
{
    return number / 100.0;
}

P.S。你不应该使用双倍的金钱价值,不好的主意。