【问题标题】:Pad zeros if precision value less than scale如果精度值小于刻度,则填充零
【发布时间】:2017-02-20 04:32:16
【问题描述】:

如果我除以 1.0f/2.0f ,则值为 0.5 。

我希望精度值为 5 (0.50000)。使用 BigDecimal 将比例设置为 5,但该值仍打印为 0.5

BigDecimal val = new BigDecimal(1.0f/2.0f);
BigDecimal tt = val.setScale(5); System.out.println(tt.doubleValue);

如何设置比例并将其设为 0.50000。我的意思是如果精度值小于刻度,则填充额外的零

例如,在这种情况下,1/2 始终为 0.5(精度为 1),如果我想要更高的精度(比如 5),我该如何实现它

请指教

【问题讨论】:

  • tt.doubleValue 您刚刚将tt 转换回没有任何特定格式的数字。
  • 对我来说是深夜,所以昏倒了。道歉

标签: java math decimal bigdecimal


【解决方案1】:

只需打印 BigDecimal

    BigDecimal val = new BigDecimal(1.0f/2.0f);
    BigDecimal tt = val.setScale(5); 
    System.out.println(tt);

或者如果你想使用双,那么你可以使用

    System.out.printf("%.5f%n", tt.doubleValue());

【讨论】:

    【解决方案2】:

    使用DecimalFormat

    BigDecimal a = new BigDecimal(1/2.0);
    BigDecimal value = a.setScale(5, BigDecimal.ROUND_HALF_EVEN);
    System.out.println(value);
    

    输出是:

    0.50000
    

    【讨论】:

    • 你的输出来自哪里?这就是 OP 遇到的问题
    • @ScaryWombat System.out.println(value);
    • @ScaryWombat 不,不一样。 1. 不需要1.0f/2.0f。 2.你没有回合模式,是吗?:) 我们都有正确答案
    猜你喜欢
    • 2014-09-18
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2019-03-13
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多