我试图返回double/float值,但没有添加尾随零。
我使用了numberformat和decimalformat,但是一旦我对结果强制转换double或float,它将添加尾随的零(这是预期的)。我想知道有没有办法防止这种情况。
private Double format (double input) {
NumberFormat nf = NumberFormat.getIntegerInstance(Locale.US);
Double result = null;
BigDecimal bd = new BigDecimal(input);
if(bd.intValue() > 99){
//(don't want to add trailing zeros here)
return (double)bd.intValue();
}else{
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(1);
result = Double.parseDouble(nf.format(bd.doubleValue()));
}
return result;
p、 我不想在这里返回字符串值。
3条答案
按热度按时间30byixjq1#
你可以用
stripTrailingZeros
哪个java内置方法返回BigDecimal
删除尾随零之后。tsm1rwdh2#
“尾随零”只是浮点数或双数的字符串表示形式。
由于后面的零不影响数字的值,所以存储在float或double中的数据保持不变。例如,“3.4”和“3.4000”是同一个数字,它只是这个数字的两种不同的表示形式,就像“3.4e+00”仍然是显示同一个数字的另一种方式。
fbcarpbf3#
如果你指定一个
int
对a的价值double
变量,默认情况下,它将始终用尾随的零表示。您有两个选择:把它格式化成一个字符串。
将其转换为
BigDecimal
然后使用BigDecimal#stripTrailingZeros
得到一个BigDecimal
没有后面的零。输出: