这两个电话有什么区别?(有吗?)

// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);

推荐答案

其中一个重要的问题是,"precision""scale"之间的区别,以及它们在这两个陈述中的使用方式,这一点被提及,但没有直接提及."precision"是数字中有效位数的总数."scale"是小数点右边的位数.

MathContext构造函数只接受precision和RoundingMode作为参数,因此在第一条语句中从未指定scale.

setScale()显然接受scale和RoundingMode作为参数,但是第二条语句中从未指定精度.

如果将小数点向右移动一位,差异将变得明显:

// 1.
new BigDecimal("35.3456").round(new MathContext(4, RoundingMode.HALF_UP));
//result = 35.35
// 2.
new BigDecimal("35.3456").setScale(4, RoundingMode.HALF_UP);
// result = 35.3456

Java相关问答推荐

在现有Json文件中添加新记录

如何让HikariCP指标在NewRelic中正确显示?

Intellij显示项目语言级别最高为12,尽管有java版本17 SDK

如何创建一个2d自上而下的移动系统,其中移动,同时持有两个关键是可能的处理?

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

Jakarta CDI强制bean构造/注册遗留事件侦听器

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

更新AWS凭据

对字符串长度进行排序,但颠倒了顺序(最长字符串在前)

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

Lombok@Nonnull是否也对供应商有影响?

STREAMS减少部分结果的问题

项目react 堆中doOnComplete()和Subscribe()的第三个参数之间的差异

Java中HashSet的搜索时间与TreeSet的搜索时间

JOLT根据值删除并保留其余的json键

泛型与泛型问题的完美解决方案?

Bash数组的单引号元素并使用空格连接

spring 数据Elastic search 与 spring 启动数据Elastic search 之间的区别是什么?

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序

java 11上出现DateTimeParseException,但java 8上没有