如何将12.443舍入为12.40

问题描述

| 我正在进行计算,现在得到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将其四舍五入为13,4 11,19至11,2 因此,最终数字将始终为##。@格式     

解决方法

(float)Math.round(value * 10) / 10
应该给您想要的结果。     ,我有此功能来做到这一点:
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;
}
    ,
DecimalFormat  twoDForm = new DecimalFormat(\"#.##\");
yourvalue=  Double.valueOf(twoDForm.format(yourvalue));
    ,使用
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
值,或将其转换为
float
。您可以使用
toString()
方法将其转换为
String
,但是最好使用对语言环境敏感的
DecimalFormat
对象,该对象将通过
format()
方法接受
BigDecimal
。     ,
    vprosvasis.setText(\"\"+new DecimalFormat(\"#,###,###.#\").format((result1*0.3)+(result2*0.7)))
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...