四舍五入到最接近的0.05值的问题

如何解决四舍五入到最接近的0.05值的问题

| 已经有很多关于此的问题。 一个流行的答案是使用以下公式。
  Math.ceiling(myValue * 20) / 20
我需要以下输出作为相应的输入。
     16.489 (input)   - 16.49(output)
使用上面的公式
     16.489*20  = 329.78

     Math.ceil(329.78) = 330.0

     and 330.0 /20  = 16.5 
但我想要的是16.49。 理想情况下,Math.ceil值应为329.8 那么如何解决上述情况呢?还有许多其他类似的情况。     

解决方法

        而不是用2 * 10乘/除,而应使用102。 但是,建议您使用
Math.round(100*a) / 100.0
,或者如果需要打印时使用
printf
DecimalFormat
。 例子:
double input = 16.489;

// Math.round
System.out.println(Math.round(100 * input) / 100.0);

// Decimal format
System.out.println(new DecimalFormat(\"#.##\").format(input));

// printf
System.out.printf(\"%.2f\",input);
输出:
16.49
16.49
16.49
    ,        为什么不使用Math.round()  格式化您的价值? 编辑:Math.round(value * 100.0)/ 100.0;     ,        我认为这将对您有所帮助。此链接为您提供了有关如何将数字四舍五入到小数点后第n位的讨论。     ,        将16.489向上舍入到最接近的0.05正确是16.5,其中16.45是下一个可能的最小值。 看到的行为是正确的。如果要舍入到最接近的0.01,则
Math.ceiling(myValue * 100) / 100
将是一个更合适的解决方案。     ,        尝试这个
round(16.489,2,BigDecimal.ROUND_CEILING);

public static double round(double x,int scale,int roundingMethod) {
        try {
            return (new BigDecimal
                   (Double.toString(x))
                   .setScale(scale,roundingMethod))
                   .doubleValue();
        } catch (NumberFormatException ex) {
            if (Double.isInfinite(x)) {
                return x;
            } else {
                return Double.NaN;
            }
        }
    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?