format是不会做四舍五入操作的吧

解决方案 »

  1.   

    这个跟你使用了DecimalForamt进行格式化数据有关系,小数点后面只有2位,所以只保留了两位
      

  2.   

    format不会做四舍五入,我这有一个四舍五入的你看看行不行:
    3.344四舍五入保留两位后得到的字符串:
    String.valueOf((new BigDecimal(3.344)).setScale(2,BigDecimal.ROUND_HALF_UP))
      

  3.   

    那为什么
    twoDigits.format(3.346)
    输出为3.35
      

  4.   

    我也不明白,好像这个format就是五舍六入的,但又不完全是,你比如
    twoDigits.format(3.3451),看看它会得到什么,好像这时候又变成四舍五入了,我记得好像是这样
      

  5.   

    对twoDigits.format(3.3451)
    是输出3.35但是why?
      

  6.   

    format主要是来格式化数据吧。
      

  7.   

    以下转自:《java技术手册》数值在不贩国家常常使用不同的的方式来显示,例如,许多欧洲语系的语言使用一个逗号来隔开浮点数中的整数与小数部分(而不是用小数点)。格式的不同往往会造成更严重的分歧,如用数字来表示金钱数目时。因此当要把数字转换为字串来显示时,请使用 java.text.NumberFormat 类别来执行转换的动作,以符合当地通用的表示方式:import java.text.*;NumberFormat nf = NumberFormat.getNumberInstance();  // 取得一个 NumberFormat
    System.out.println(nf.format(9876543.21));
    try
    {
      Number n = nf.parse("1.234.567,89");  // 使用当地的规则来分析字串
    }
    catch(ParseException e)
    {
    // 处理例外
    }
    // 金钱值有时候的格式会与数字的格式不同
    NumberFormat moneyFmt = NumberFormat.getCurrencyInstance();
    System.out.println(moneyFmt.format(1234.56));  // 若是在美国,会显示 $1,234.56
    long nearest = Math.round(d);  // 求出最接近的整数值