由于需要处理精度比较高的浮点数,所以弃用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,ROUND_HALF_DOWN);
转:http://blog.csdn.net/lopper/archive/2010/02/21/5314686.aspx
分享到:
相关推荐
no exact representable decimal result." 提示我们,当前的除法运算会导致无限循环的小数部分,Java无法为这样的结果找到一个精确的`BigDecimal`表示。为了解决这个问题,我们需要在调用`divide`方法时指定商的...
[r4118]fix non-ascii characters in ACPI tables headers;[r4119]new csr settings, by PMheart;[r4120]consider more intel cpu family. update some information.;[r4121]align SETTING_DATA;[r4122]OemID ...
AM-Asterisk PBX GUI配置/管理系统。 AM提供了用于创建Asterisk配置(.conf)文件HTML界面。 它还允许您远程管理和监视集团电话。
1. 在LTE网络中,Paging消息先于Extended Service Request发送,后者携带service-type:mobile-terminating-CS-fallback,表明是MT-CSFB(Mobile-Terminating CS Fallback)。 2. Paging Response在GSM网络中取代了...
py>> > show ( '0.25' )s exp significants0 01111101 00000000000000000000000 = 0.25+ - 2>> > show ( '0.3' ) # example of a non-terminating expansions exp significants0 01111101 00110011001100110011010 ...
-Terminating app main thread with osThreadExito to avoid endless loop Added board support: -NUCLEO-F429ZI board -NUCLEO-F746ZG board Added debugProbe attribute to board description.
- `no frame-relay inverse-arp` 和 `no arp frame-relay` 用于关闭逆向地址解析,便于手动管理。 - `clear frame-relay inarp` 清除帧中继的IARP缓存。 7. **子接口类型**: - **点对点**:模拟专线,每个子...
- **中止(Non-Terminating)**:系统运行无期限地持续下去而无法正常结束。 通过PAT的验证结果,进一步采用数学归纳法证明了根据PMDA设计的物联网应用系统在实际运行中不会出现上述不良状态。 #### 结论与展望 综...
- 使用`frame-relay intf-type dce`指定接口为DCE(Data Circuit-terminating Equipment),这是提供时钟信号的一方。 - `frame-relay lmi-type ansi`定义了本地管理接口(LMI)类型为ANSI,用于状态和统计信息的...
这种方法在非终止环境(non-terminating environments)中特别有用,因为它不需要知道状态转移的详细信息。 时序差分学习则更为灵活,它允许在每个时间步根据当前状态的回报预测进行更新。最简单的形式是Q学习,它...
PMON (ospid: nnnn): terminating the instance due to error 481 可能原因 根据Oracle官方文档,错误481可能是由于以下几种原因引起的: 1. Link local IP (169.254.x.x) is being used by other adapter/...
Canceling SQL and Terminating Sessions - **功能**:允许管理员取消正在执行的 SQL 语句或终止特定的会话。 - **应用场景**:当发现某个会话占用过多资源或执行时间过长时,可以采取措施以释放资源。 #### 三、...
结果显示,s1/1接口的物理状态为down,配置为DCE(Data Circuit-terminating Equipment),通常作为时钟源,而V.11(X.21)表示它使用的是适用于同步串行连接的标准。接口的其他状态,如DSR、DTR、RTS和CTS信号都...
- **Test Mode Connection and Disconnection**: Establishing and terminating connections in test mode. - **Broadcast Information Update**: Updating the broadcast information in the network. ### **LTE ...
C接口标准是1969年由美国电子工业协会(Electronic Industries Association,简称EIA)发布的一项通信协议,旨在规范数据终端设备(Data Terminal Equipment,DTE)与数据电路终端设备(Data Circuit-Terminating ...
fix crash ---- Terminating app due to uncaught exception NSInvalidArgumentException , reason: [AVCaptureMetadataOutput setMetadataObjectTypes:] unsupported type found. Use ...
2. LTE网络:ExtendedServiceRequest,携带service-type:mobile-terminating-CS-fallback,对应Event List中的CSFBServiceRequest。 3. LTE网络:RRCConnectionRelease,对应Event List中的InterRATRedirectionReq...
- `copy running-config startup-config`:将运行中的配置文件保存至NVRAM(Non-Volatile Random Access Memory),确保重启后配置不会丢失。 - `interface`:进入特定网络接口的配置模式,允许设定IP地址、链路层...