我如何围绕12.443到12.40

时间:2011-04-13 15:02:44

标签: android

我正在计算,我得到了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) );

示例:

  • 如果我得到12,70001我想要舍入到12,7
  • 如果我得到13,4402将其四舍五入到
  • 11,19至11,2

因此,最终的数字将始终为##。@ format

5 个答案:

答案 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

我认为result1result2String个实例。

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)))