当前位置: 首页 > 面试题库 >

java.math.MathContext的使用

张高澹
2023-03-14
问题内容

最近,我尝试了解 java.math.MathContext
的用法,但未能正确理解。它用于四舍五入java.math.BigDecimal。如果是,为什么不四舍五入十进制数字,甚至尾数部分。

从API文档中,我知道它遵循,ANSI X3.274-1996ANSI X3.274-1996/AM 1-2000规范中指定的标准,但是我没有让他们在线阅读。

如果您对此有任何想法,请告诉我。


问题答案:

@贾坦

谢谢您的回答。这说得通。您能否在BigDecimal#round方法的上下文中向我解释MathContext。

BigDecimal.round() 其他BigDecimal方法 相比,
没有什么特别的。在所有情况下,均MathContext指定有效位数和舍入技术。基本上,每个元素都有两个部分MathContext。有精度,也有RoundingMode

精度再次指定有效位数。因此,如果您指定123一个数字,并要求输入2个有效数字,您将得到120。如果您以科学计数法来考虑,可能会更加清楚。

123将以1.23e2科学计数法表示。如果仅保留2个有效数字,则得到1.2e2120。通过减少有效数字的位数,我们降低了指定数字的精度。

RoundingMode部分指定了如何处理精度损失。要重用该示例,如果您将其123用作数字并要求输入2个有效数字,则降低了精度。带有RoundingModeHALF_UP(默认模式),123将变为120。用RoundingModeCEILING,你会得到130

例如:

System.out.println(new BigDecimal("123.4",
                   new MathContext(4,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
                   new MathContext(2,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
                   new MathContext(2,RoundingMode.CEILING)));
System.out.println(new BigDecimal("123.4",
                   new MathContext(1,RoundingMode.CEILING)));

输出:

123.4
1.2E+2
1.3E+2
2E+2

您可以看到精度和舍入模式都会影响输出。



 类似资料:
  • 问题内容: 如果我有一个类似于以下内容的请求映射: 然后使用以下命令调用此请求: 我收到错误消息 我可以通过停止javascript客户端发送空参数或接受字符串值并仅在未发现空白的情况下进行解析来解决此问题。 更新:spring的更高版本现在实现了最初想要的行为。 我刚刚在spring4.3.5中对此进行了测试,发现该行为实际上实际上会将null值转换为默认值而不会引发NumberFormatEx

  • 我在Scala2.11.1和Hzaelcast 3.5中使用kryo进行序列化。我试图将数据放在hazelcast映射中,但我得到了KryoException 下面是我的用户类序列化程序 现在,当我将用户类对象从Hcast客户端放入相应的映射中时,如下所示 它给了我这些例外: 以下是中的 请帮帮我!!

  • 主要内容:下载 Nexus 3,启动 nexus 服务,访问 nexus 3.x目前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。 目前使用最多的,运行最稳定是 Nexus 2,但随着 Nexus 3 对 Maven 的支持越来越稳定,很多公司和组织都陆续开始使用 Nexus 3。 本节我们将介绍 Nexus

  • 使用StaggedGridLayoutManager/GridLayoutManager如何使网格项在垂直方向上具有两个跨距,在水平方向上具有两个跨距?

  • 本文向大家介绍arguments 的使用?相关面试题,主要包含被问及arguments 的使用?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: arguments是类数组对象,有length属性,不能调用数组方法 可用Array.from()转换

  • JsTestDriver 是 javascript 单元测试工具,webstorm 集成了 JsTestDriver ,可以直接使用。 1.在你的根目录中插入JsTestDriver的配置文件jsTestDriver.conf 内容可能如下:(根据本机目录的实际情况配置) server: http://localhost:9876 load: - assets/3.0/tools/jasmin