当前位置: 首页 > 面试题库 >

格式化双精度到2位小数不起作用

傅涵忍
2023-03-14
问题内容

我想四舍五入:

3.499999999999999

至:

3.50

我已经使用了这两种方法:

DecimalFormat df = new DecimalFormat("0.00");
        double result = Double.valueOf(df.format(input));
        System.out.println(answer);

public double round(double input)
    {
        int decimalPlace = 2;
        BigDecimal bd = new BigDecimal(input);
        bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);

        return (bd.doubleValue());
    }

但它一直在打印:

3.5

有人对此有解决方案吗?因为我真的认为这应该可行。谢谢你的帮助。


问题答案:

您的第一个解决方案确实非常接近。只是这样做:

    DecimalFormat df = new DecimalFormat("0.00");
    System.out.println(df.format(input));

您的版本无法正常运行的原因是,您使用了inputdouble格式,String使用2dp将其格式化为,然后又将其转换回了double
System.out.println然后照常打印double,没有特殊的小数位规则。



 类似资料:
  • 标题中说了一切。我想转换字符串中的双2小数。 我尝试了夸克斯的例子: 这是我的模板 但它总是导致NOT_FOUND。 唯一的方法是把: 并更改我的模板: 有更好的办法吗?我使用了quarkus rest easy qute和quarkus qute扩展,两者都是相同的。

  • 目前,我正在使用以下代码来格式化“值”常量: 我得到的结果是2366.34,但我希望它是0.05的倍数。在这种情况下,它应该是2366.35。 最好的方法是什么?

  • 问题内容: 应该很容易。我本来是用javascript来做的,但是在设置我的处理程序页面中的表单之前必须先做。无论如何,我需要使这些值具有2个小数位。Ex 219333.5888888必须为219333.58。有修剪功能或其他功能吗? 问题答案: 这是格式化十进制值的简单示例

  • 我想用一个小数点和一个小数位的格式将任何双精度四舍五入为双精度,这样29575.347434将是2.3。 我试着用decimalFormat做这个,但当我试着我只得到了一个29575.3格式的字符串,带有一个,我不知道如何在保留值为双精度的同时去掉所有小数点。

  • 问题内容: 我有一个类似的双精度数字,我需要把它显示为。 如何用Java做到这一点? 问题答案: 结果是 这是我最接近的。

  • 问题内容: 我想使用双精度最多2个小数位。即,它将最多存储2个小数位,如果比较两个双精度值,则比较应仅基于前2个小数位。如何实现这样的事情?我的意思是存储,比较所有内容都将仅基于小数点后两位。其余位置可能不同,大于,小于,无所谓。 编辑 我的价值观不大。说从0到5000最大值。但是我必须乘以Cos A,Sin A很多次,其中A的值在程序过程中不断变化。 编辑 在我的程序中,汽车以特定速度(例如12