BigDecimal 乘法问题
来源:互联网 发布:多益网络账号注册 编辑:程序博客网 时间:2024/05/21 08:54
直接用我的代码和结果描述一下问题吧:
代码:
/** * Created by zhangx-ae on 2016/5/17. */public class DemoTest { public static void main(String[] args) { BigDecimal a = new BigDecimal(1000000); BigDecimal b = a.multiply(new BigDecimal(0.21)); System.out.println(b); }}
结果:
209999.9999999999922284388276239042170345783233642578125000000
我想要的结果是210000.00,应该如何处理结果呢?
实际上这是BigDecimal将double转化为Bigdecimal时出的问题,这是因为0.21不能够精确的表示double值,使用BigDecimal将double转化为精确值的时候所得的结果就会是0.2099999999999999922284388276239042170345783233642578125,所以相乘以后结果会是那个样子。
将String转为BigDecimal的时候,字符串是多少,结果就是多少,因此想要将double类型的数据转为BigDecimal的时候,这样做也许才是你想要的结果:
BigDecimal b = new BigDecimal(String.valueOf(0.21));
结果:
210000.00
0 0
- BigDecimal 乘法问题
- BigDecimal问题
- BigDecimal,Double精度问题
- 加减乘除的问题 - BigDecimal
- BigDecimal比较问题
- BigDecimal小问题
- BigDecimal精度问题
- BigDecimal的比较问题
- BigDecimal 小数精度问题
- BigInteger 转 BigDecimal 问题
- BigDecimal比较大小问题
- BigDecimal的问题
- BigDecimal的问题
- BigDecimal中的精度问题
- BigDecimal的除法问题
- bigdecimal类型除法问题
- Bigdecimal精度问题
- java BigDecimal加法/减法/乘法/除法 保留两位小数
- mysql binlog_do_db参数设置的坑
- LeetCode 100. Same Tree
- 2016-百度之星-资格赛-Problem B【高精度】
- STM32F103时钟系统:系统时钟配置为56M,有哪些配置方法
- linux内核编译
- BigDecimal 乘法问题
- hjr理解-CPU,MCU,MPU,DSP,MCU,ARM.SOC,SOPC,FPGA
- Android 之startActivityForReult 与 onActivityResult简介
- Android——SharedPreferences存储数据方式
- 51 NOD:1225 余数之和(推公式)
- iOS8 屏幕横竖屏分析
- 富文本字符串颜色改变效果
- iOS - Xcode -Target , PROJECT 区别
- Blade模板引擎-常用语法格式