Java 整数字符串格式问题

Java 整数字符串格式问题,java,string,formatting,int,Java,String,Formatting,Int,我返回这个,它类似于你对美元的看法,$“32.95”等等。我用美分计算它,这是一个整数,但问题是,如果数字小于这一数字,下半部分将去掉10美分部分。例如,如果我有“32.08”,它返回为“32.8”。有什么想法吗?我知道我需要一个if,但我想不出怎么写 public String toString() { return (cents / 100)+ "." + (cents % 100); } 使用BigDecimal类,这就是它的用途。您可以使用 DecimalFormat是Numb

我返回这个,它类似于你对美元的看法,$“32.95”等等。我用美分计算它,这是一个整数,但问题是,如果数字小于这一数字,下半部分将去掉10美分部分。例如,如果我有“32.08”,它返回为“32.8”。有什么想法吗?我知道我需要一个if,但我想不出怎么写

public String toString()
{
    return (cents / 100)+ "." + (cents % 100);
}

使用BigDecimal类,这就是它的用途。

您可以使用

DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。它有各种各样的功能,可以在任何语言环境下解析和格式化数字,包括支持西文、阿拉伯文和印度文数字。它还支持不同类型的数字,包括整数(123)、定点数字(123.4)、科学记数法(1.23E4)、百分比(12%)和货币金额(123美元)。所有这些都可以本地化


您可以随时检查美分%100是否小于10,如果小于10,请再添加0。不过,可能还有一个更优雅的解决方案。

因此,
32.08%100
8
而不是
08
。当然,对于小于10的值,您可以添加一个
“0”

但是,您可能需要考虑使用
java.text
,尤其是
NumberFormat
DecimalFormat
MessageFormat
<如果您试图编写机器可读的文本,code>java.util.Formatter和“
printf
”可能更合适

NumberFormat nf=NumberFormat.getInstance(); // Get Instance of NumberFormat
nf.setMinimumIntegerDigits(5);  // The minimum Digits required is 5

return (cents / 100)+ "." + nf.format(cents % 100);
应该可以了,我已经有一段时间没有使用java了。

快速黑客:

return String.format("%d.%02d", cents/100, cents%100);
(“”+(100+美分%100))。子字符串(1)//LOL

(美分/100)+“+”+(美分/10%10)+(美分%10);// 抽象在哪里?Java是一种面向对象的语言。将所有实现细节封装在Money类中并对客户端隐藏不是更好的主意吗?

@Anon,你说过不要在我删除的答案中使用浮点数;你是什么意思,因为我用的是双精度?这么糟糕的钱?因此,MYYN的答案也是一个糟糕的答案,因为它的示例使用了double?+1。与使用双精度或双精度小数的答案相比,我更喜欢这个答案。谢谢ZZ-`“%d.%2d”将填充空格,而不是零。我会把它修好。@Ruben:是的,
MYYN的答案也不好,因为它使用了
双精度。浮点类型不适用于货币计算,因为它们的精度有限,无法以无限精度存储所有十进制数。
return String.format("%d.%02d", cents/100, cents%100);
(""+(100+cents%100)).substring(1) // LOL

(cents / 100)+ "." + (cents /10 %10) + (cents % 10); // <<== OK