2014-02-12 52 views
0

我正在使用BigDecimal来表示价格并希望具有等于整数的数字不具有小数部分和具有非零小数的数字部分显示两位数字。如:如何比较BigDecimal数字以查看它是否是整数

value outputs 
12.0  12 
12.25 12.25 
12.87 12.87 

我有,但它总是显示为两个数字:

if !price.price.nil? && price.price.frac=='0.0' # this comparison is not working correctly 
    s=helpers.number_to_currency(price.price, precision: 0, format: "%n") 
else 
    s=helpers.number_to_currency(price.price, precision: 2, format: "%n") 
end 

我如何比较的BigDecimal,看它是否将是一个整数?

THX

回答

1

.frac不产生一个字符串,它产生一个BigDecimal。你可以尝试以下方法:

if !price.price.nil? && price.price.frac==0

这应该是你要找的比较。

+0

更新,谢谢! – jklina

0

而是测试分数的,使用的NumberFormat对象:

public static String formatNicely(BigDecimal bd) { 
    NumberFormat formatter = NumberFormat.getNumberInstance(); 
    formatter.setMinimumFractionDigits(0); 
    formatter.setMaximumFractionDigits(2); 
    return formatter.format(bd); 
} 
相关问题