我回来了,它类似于你如何看待美元,$“32.95”等我用美分计算它是一个int,但问题是下半部分切断了10美分的部分如果数量少于那个。例如,如果我有“32.08”,则返回“32.8”。有任何想法吗 ?我知道我需要一个if但我不能想如何写它。
public String toString()
{
return (cents / 100)+ "." + (cents % 100);
}
答案 0 :(得分:6)
您可以使用http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html
DecimalFormat是NumberFormat的具体子类,用于格式化十进制数。它具有多种功能,旨在解析和格式化任何语言环境中的数字,包括支持西方,阿拉伯语和印度语数字。它还支持不同类型的数字,包括整数(123),定点数(123.4),科学记数法(1.23E4),百分比(12%)和货币金额(123美元)。所有这些都可以进行本地化。
String pattern = "$###,###.###";
double value = 12345.67;
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
// => 12345.67 $###,###.### $12,345.67
答案 1 :(得分:3)
快速破解:
return String.format("%d.%02d", cents/100, cents%100);
答案 2 :(得分:0)
使用BigDecimal类,这就是它的用途。
答案 3 :(得分:0)
您可以随时检查%100是否小于10,如果是,则再添加0.这可能是一个更优雅的解决方案。
答案 4 :(得分:0)
因此,32.08 % 100
8
不是08
。当然,您可以为小于10的值添加"0"
。
但是,您可能需要考虑使用java.text
,尤其是NumberFormat
,DecimalFormat
和MessageFormat
。如果您尝试编写机器可读文本,java.util.Formatter
和“printf
”可能更合适。
答案 5 :(得分:0)
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一段时间。
答案 6 :(得分:0)
(""+(100+cents%100)).substring(1) // LOL
(cents / 100)+ "." + (cents /10 %10) + (cents % 10); // <<== OK
答案 7 :(得分:0)
抽象在哪里? Java是一种面向对象的语言。将所有实现细节封装在Money类中并将其隐藏在客户端中不是一个更好的主意吗?