java - Java new BigDecimal 生成另一个数字
问题描述
我使用 BigDecimal 数据类型,当我设置
new BigDecimal(21.30);
然后,我将它作为 xml 源返回,它显示为
21.30000000000710522735760100185871124467578125
另一个号码
new BigDecimal(23.11)
回来
23.1099999994315658113818187512921995859375
我想以与我在创建时设置的相同小数显示结果。
解决方案
此构造函数的结果可能有些不可预测。有人可能会假设
new BigDecimal(0.1)
用 Java 编写的 aBigDecimal
正好等于 0.1(未缩放的值 1,比例为 1),但它实际上等于 0.1000000000000000055511151231257827021181583404541015625。这是因为 0.1 不能完全表示为 a
double
(或者,就此而言,不能表示为任何有限长度的二进制分数)。因此,传递给构造函数的值并不完全等于 0.1,尽管看起来如此。
如果您检查 BigDecimal java 文档,您会发现您将不得不使用带有String
参数的构造函数来结束您需要的行为。
推荐阅读
- javascript - Mocha 关闭了 beforeEach 错误的整个测试套件
- java - Java itext4.x 数字签名
- javascript - 表单提交和表单验证 HTML JavaScript 后如何显示新数据
- docker - 更改卷后 docker-compose 不起作用
- java - Java 流,试图转一个 Map
> 进入地图 >> - flutter - 带有覆盖部分屏幕的 GridView 弹出窗口
- r - 是在给定时间窗口内的给定分组中重复的字符串
- javascript - 如何构建表单以允许用户在 Nuxt/Vue 应用程序中创建动态属性?
- javascript - 如何改变json结构
- python - C#读取二进制如何在python中做