Non-terminating decimal expansion; no exact representable decimal result.
由于需要处理精度比较高的浮点数,所以弃用double类型,改用BigDecimal类来进行数值处理。
在加减乘时都没有出现问题,但是到除法运算时,提示了如下错误:
大概的意思是“无法结束的除法表达式;没有精确的除结果”。我当时输入的10/3,结果应该是3.3333....333。
于是在网上找资料,发现我原来的处理方式有问题。
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("3");
BigDecimal num3 = num1.divide(num2);
其实devide的函数定义如下
BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
scale为小数位数;
roundingMode为小数模式;
ROUND_CEILING
如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。
ROUND_DOWN
从不在舍弃(即截断)的小数之前增加数字。
ROUND_FLOOR
如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。
ROUND_HALF_DOWN
若舍弃部分> .5,则作 ROUND_UP;否则,作 ROUND_DOWN 。
ROUND_HALF_EVEN
如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作 ROUND_HALF_DOWN 。
ROUND_HALF_UP
若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_UNNECESSARY
该“伪舍入模式”实际是指明所要求的操作必须是精确的,,因此不需要舍入操作。
ROUND_UP
总是在非 0 舍弃小数(即截断)之前增加数字。
写成如下便可通过
BigDecimal num3 = num1.divide(num2,10,BigDecimal.ROUND_HALF_UP);
分享到:
相关推荐
这个库可能包括了加法、减法、乘法、除法以及比较、取模等多种操作,确保在执行这些操作时不会丢失精度。同时,它可能还支持大数的四舍五入、舍去尾数等处理,以满足各种复杂的计算需求。 `mathcontext2.js`文件很...
2. **算术操作**:提供加法(`add`)、减法(`subtract`)、乘法(`multiply`)、除法(`divide`)等基本算术运算,这些操作能确保结果的精度不受JavaScript Number类型的限制。 3. **比较操作**:支持小于(`lt`)...
"BigDecimal.js.zip"是一个压缩包,其中包含了"BigDecimal-all-last.min.js"文件。这个文件是BigDecimal.js库的最小化(minified)版本,旨在减小代码体积,提高网页加载速度。"min.js"通常表示经过压缩和混淆处理,...
异常信息 "Non-terminating decimal expansion; no exact representable decimal result." 提示我们,当前的除法运算会导致无限循环的小数部分,Java无法为这样的结果找到一个精确的`BigDecimal`表示。为了解决这个...
js 处理大数据计算,bigdecimal的工具包
1. **高精度**:Decimal4使用整数数组存储十进制数,支持任意长度的小数部分,极大地提高了数值计算的精度,避免了浮点数运算中的误差。 2. **操作丰富**:提供加减乘除、比较、取模、幂运算等基本数学操作,并可能...
- `divide(BigDecimal divisor)`:除法操作。 ##### 4. 精度设置与舍入模式 在进行数学运算时,可以通过 `setScale(int newScale, RoundingMode roundingMode)` 方法来指定结果的精度和舍入模式。常用的舍入模式...
2. **运算符重载**:库中的`Decimal`结构体支持常见的数学运算符,如加法、减法、乘法、除法以及比较操作,使得代码更加简洁易读。 3. **错误处理**:在执行可能导致错误的操作(如除以零)时,`rust-decimal`会...
宽十进制宽十进制为扩展精度十进制浮点类型实现通用C ++模板。 此C ++模板仅标头库实现了dec101_t大十进制浮点类型,例如dec101_t , dec10001_t , dec1000001_t等,其本质上可以像常规的内置浮点类型一样使用。...
的轻量版本, 的任意精度 Decimal 类型。 这个库是最新的库家族: 、 、 和decimal.js-light 。 该 API 或多或少是decimal.js的 API 的一个子集。 这个库和decimal.js之间的差异缩小后的decimal.js 的大小:32.1 KB...
kmulti-bignumber为BigDecimal和BigInteger类型提供了多平台expect声明和actual实现。 下载 repositories { maven { url "https://dl.bintray.com/kmulti/kmulti-bignumber" } } 每个Kotlin模块分别使用以下依赖...
- **`BigDecimal`**: 支持任意精度的小数运算。 - 这两个类位于`java.math`包中,适用于需要高精度计算的场景。 #### 小结 通过以上内容,我们对Java的基础知识有了更深入的理解。了解这些基础知识对于编程非常...
- `decimal`, `money`, `smallmoney`, `numeric`: 使用 `java.math.BigDecimal` 类来表示。 - `real`: 使用 `java.lang.Float` 类来表示。 #### 4. 布尔值 - **SQL Server 数据库类型**: `bit` - **Java 对应类型...
BigDecimal 类详解 BigDecimal 类是 Java 中的一种数值类型,主要用于处理超过 16 位有效数字的数值运算。该类提供了多种构造器和方法,用于创建和操作 BigDecimal 对象。 构造器 BigDecimal 类提供了四种构造器...
alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...
标题中的"BigDecimal-CPP-master.zip"表明这是一个与BigDecimal类实现相关的C++项目压缩包。BigDecimal是一种可以处理任意精度的十进制浮点数的数据类型,它通常用于金融或会计等需要高精度计算的领域,因为在这些...
- `BigDecimal distance`:距离。 - `BigDecimal cost`:费用。 - `Integer maxRunners`:最大参赛人数,默认值为 100000。 - **约束**: - `name` 不允许为空且最大长度为 50。 - `startDate` 必须晚于当前...
6. 精确的除法运算:使用 BigDecimal 的 divide 方法可以进行精确的除法运算,例如将两个 BigDecimal 对象相除并返回结果。需要注意的是,除法运算可能会出现无限循环的小数,为了避免这种情况,可以使用 scale 参数...
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
- `divide(BigDecimal divisor)`: 除法。 ```java BigDecimal bd3 = bd1.add(bd2); BigDecimal bd4 = bd1.subtract(bd2); BigDecimal bd5 = bd1.multiply(bd2); BigDecimal bd6 = bd1.divide(bd2, 2, ...