当前位置: 首页 > 知识库问答 >
问题:

如何在Java中始终保留2位小数

章越
2023-03-14

我想四舍五入任何双到一个字符串2小数位在Java。我尝试过使用十进制格式,但它没有给出预期的结果。任何帮助将不胜感激。

Ex: I/P:3402100.5323

我想将其转换为:

O/P: 34.02

我尝试过使用DecimalFormat(“###,##,##,###0.00”,新的DecimalFormatSymbols(Locale.US))但结果是340210.53,而我希望它输出34.02

附言:如果I/P是34.02,我希望它在应用格式后仍然保持不变

共有3个答案

史涵育
2023-03-14

把一个数字变成完全不同的东西,自然,不是decimalform的工作。

要从代表3402100.5323的数字到字符串“34.02”,首先必须得到一个更接近“34.02”的数字。换句话说,先除以10000.0。

然后,String。格式(“%.2f”)似乎是一种简单的方法:将任何双精度字符转换为字符串,但在小数点分隔符后使用的数字不得超过2位。如果你想把3400000.123变成“34.00”而不是“34”,你可以把它变成字符串。格式化(“%.02f”)以强制执行零。

public String renderWhateverThatIs(double in) {
    return String.format("%.02f", in / 100000.0);
}

renderWhateverThatIs(3402100.5323);
> 34,02

请注意,如果将点或逗号视为分隔符,机器区域设置将指示。您可以通过显式地将区域设置传递到格式来强制解决该问题。

公西凯捷
2023-03-14
String.format("%0.2f", 34.021005323)

看见https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,java.lang.Object…)和https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

司徒高寒
2023-03-14

在我看来,这可以通过两个步骤实现:

>

  • 将数字转换为定制的四舍五入。(3402100.5323至34.021005323)。将输入除以10的幂,使其四舍五入为2位数。

    然后可以漂亮地打印转换后的数字,以截断2位小数后的值(34.021005323到34.02)

    public static void main(String[] args) {
      double input = 3402100.5323;
    
      double output = input / getDivisor(input);
      System.out.printf("%.2f%n", output);
    }
    
    private static double getDivisor(double input) {
      int length = String.valueOf((long) input).length();
      return Math.pow(10, length - 2) ;
    }
    

    产出:34.02

  •  类似资料:
    • 本文向大家介绍java、freemarker保留两位小数,包括了java、freemarker保留两位小数的使用技巧和注意事项,需要的朋友参考一下  一、Java保留2位小数 二、freemarker保留两位小数 补充:freemarker保留小数 freemarker保留两位小数 方法一     #{number ;m1M2}    m 最少几位小数,M最多几位小数 方法二   ${x?stri

    • 问题内容: 我有一个ng模型的浮点值,我希望始终在其小数点后2位显示: 当“ myNumb”为小数时,此方法适用于大多数情况。但是,如果“ myNumb”的小数位数少于2个(3.2)或整数(30), 则不会强制显示小数点后2位。如何在字段中强制显示小数点后2位 问题答案: AngularJS-输入数字两位小数可以帮助…过滤: 设置正则表达式以使用ng-pattern验证输入。在这里,我只接受最多2

    • 问题内容: 我想显示: 如 和: 如 不管小数点的长度或是否有任何小数位,我都希望显示带有2个小数位的a,并且我想以一种有效的方式来做到这一点。目的是显示货币值。 例如, 问题答案: 我想您可能正在使用模块中的对象?(如果您需要精确到小数点后两位精确到两位数且任意大的数字,那么绝对应该如此,这就是您的问题标题所暗示的……) 如果是这样,文档的“ 十进制常见问题解答” 部分将包含一个问题/答案对,这

    • 问题内容: 我要显示: 和: 不管小数点的长度或是否有小数位,我都希望显示一个带有2个小数位的,并且我想以一种有效的方式做到这一点。目的是显示货币值。 例如, 问题答案: 我想你可能正在使用模块中的对象?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……) 如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用: 问:在具有

    • 有没有办法将值的格式设置为始终显示两位小数? 示例:我想查看,而不是。

    • 问题内容: 我想格式化我的数字,使其始终显示2个小数位,并在适用的情况下四舍五入。 例子: 我一直在使用这个: 但它显示为,而不是。 问题答案: (Math.round(num * 100) / 100).toFixed(2); 现场演示 请注意,它将 四舍五入 到小数点后两位,因此输入将返回。