Java 大小数舍入问题

Java 大小数舍入问题,java,Java,我想将1256.3648转换为126.36(最多两位小数) 为了实现这一点,我使用.setScale(2,BigDecimal.ROUND_HALF_UP)) 但由于某些原因,它不起作用 有什么想法吗?你可以这样做 .setScale(2, RoundingMode.FLOOR); 假设您正在对象上调用它 你会付款吗 1256.36 如果您的输入是1256.3648 记住 java.math.BigDecimal.setScale(int-newScale,RoundingMode round

我想将1256.3648转换为126.36(最多两位小数)

为了实现这一点,我使用
.setScale(2,BigDecimal.ROUND_HALF_UP))

但由于某些原因,它不起作用


有什么想法吗?

你可以这样做

.setScale(2, RoundingMode.FLOOR);
假设您正在对象上调用它

你会付款吗

1256.36

如果您的输入是
1256.3648

记住

java.math.BigDecimal.setScale(int-newScale,RoundingMode
roundingMode)
返回一个
BigDecimal
值,该值的刻度是指定的 值,其未标度值通过乘以或 将此BigDecimal的未标度值除以 保持其整体价值


你可以这样做

.setScale(2, RoundingMode.FLOOR);
假设您正在对象上调用它

你会付款吗

1256.36

如果您的输入是
1256.3648

记住

java.math.BigDecimal.setScale(int-newScale,RoundingMode
roundingMode)
返回一个
BigDecimal
值,该值的刻度是指定的 值,其未标度值通过乘以或 将此BigDecimal的未标度值除以 保持其整体价值


下面是一个演示舍入的测试程序:

导入java.math.BigDecimal

public class Test {
  public static void main(String[] args) {
    BigDecimal x = new BigDecimal("1256.3648");
    BigDecimal y = x.setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println(x);
    System.out.println(y);
  }
}
它输出:

1256.3648
1256.36

x
保持不变,但是
setScale
调用的结果被正确舍入。

下面是一个测试程序,演示舍入:

导入java.math.BigDecimal

public class Test {
  public static void main(String[] args) {
    BigDecimal x = new BigDecimal("1256.3648");
    BigDecimal y = x.setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println(x);
    System.out.println(y);
  }
}
它输出:

1256.3648
1256.36

x
保持不变,但
setScale
调用的结果已正确舍入。

您的意思是
126.3648
?另外,
BigDecimal
是一种不可变的类型……到底什么不起作用?你已经试过什么了?你是说
126.3648
?另外,
BigDecimal
是一种不可变的类型……到底什么不起作用?你已经试过什么了?