我正在计算,我得到了12,443。我想把它四舍五入到12,40。这是我尝试这样做的方式,但我得到12而不是12,40
float result = Math.round( (new Float(result1)*0.3) + (new Float(result2)*0.7) );
vprosvasis.setText( Float.toString(result) );
示例:
因此,最终的数字将始终为##。@ format
答案 0 :(得分:16)
(float)Math.round(value * 10) / 10
应该给你想要的结果。
答案 1 :(得分:2)
我有这个功能:
public static float get_ROUND(float p_VALUE, int p_DECIMAL)
{
if (p_DECIMAL == 0) return (float) Math.round(p_VALUE);
long l_LNG = 1;
for (int i = 1; i <= p_DECIMAL; i++)
{
l_LNG = l_LNG * 10;
}
return (float) Math.round(p_VALUE * l_LNG) / l_LNG;
}
答案 2 :(得分:1)
DecimalFormat twoDForm = new DecimalFormat("#.##");
yourvalue= Double.valueOf(twoDForm.format(yourvalue));
答案 3 :(得分:0)
使用DecimalFormat
,但指定正确的舍入模式。默认情况下,它使用ROUND_HALF_EVEN
,但ROUND_HALF_UP
在很多财务应用程序中很常见。
如果你真的想在进一步的计算中找到并使用舍入值(这是不寻常的,因为它会产生不准确的结果),你可以使用BigDecimal
。
我认为result1
和result2
是String
个实例。
float value = Float.parseFloat(result1)*0.3F + Float.parseFloat(result2)*0.7F;
BigDecimal d = new BigDecimal(String.valueOf(value));
BigDecimal rounded = d.setScale(1, BigDecimal.ROUND_HALF_EVEN);
使用BigDecimal
而不是乘法,舍入和除法的主要优点是可以选择舍入模式(半上,半偶等)。操作BigDecimal
比原始float
贵得多,因此对于交互式金融应用而言,这比科学模拟更好。
然后,您可以按原样使用rounded
值,或convert it to a float
。您可以使用toString()
方法转换为String
,但最好使用对区域设置敏感的DecimalFormat
对象,该对象将接受BigDecimal
及其format()
方法。
答案 4 :(得分:0)
vprosvasis.setText(""+new DecimalFormat("#,###,###.#").format((result1*0.3)+(result2*0.7)))