gpt4 book ai didi

java - 在 java 1.5 中截断 Float(不包括 setRoundingMode)

转载 作者:行者123 更新时间:2023-12-02 00:23:38 34 4
gpt4 key购买 nike

我想在 Java 中截断浮点值。

以下是我的要求:

  1. if i have 12.49688f, it should be printed as 12.49 without rounding off
  2. if it is 12.456 in double, it should be printed as 12.45 without rounding off
  3. In any case if the value is like 12.0, it should be printed as 12 only.

Condition 3 is to be always kept in mind.It should be concurrent with truncating logic.

P.S:我使用的是 Java 1.5 。所以我知道如何在 Java 1.6 中做到这一点,即使用十进制格式并调用 setroundingMode () 方法。我需要了解 Java 1.5

最佳答案

相乘,使用Math#floor并在将数字提供给 DecimalFormat 之前进行除法。这与截止舍入相同。

// Replace N with the desired number of decimals after the comma
number = Math.floor(1eN * number) / 1eN

由于浮点计算中的舍入误差,这并不完美,因此您仍然需要为 DecimalFormat 指定 N 位小数。

 

一个(更昂贵,但也更合乎逻辑的)替代方案是使用 BigDecimal .

// Given as seperate statements for clarity, but these can be combined into a single line
// Replace "N" with the number of decimals after the comma
MathContext NDecimals = new MathContext(N, RoundingMode.FLOOR);
BigDecimal bdNumber = new BigDecimal(number, NDecimals);
number = bdNumber.doubleValue();

关于java - 在 java 1.5 中截断 Float(不包括 setRoundingMode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430370/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com