double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();我用这个方法来保留小数。当为2时结果是111231.56
当为1时,结果为111231.6
当为3时结果是:111231.558(按照四舍五入是不是应该是111231.559)为什么会这样?
解决方案 »
- java io 的问题,请高手指点
- 父类应用指向子类对象,我这种写不知道哪里错了,请帮我看看
- Struts2中的传值方式的好处与坏处
- 看到一个.bat 文件,里面有这么一句,看不懂
- 很菜的问题!急
- JCreator里的函数提示功能如何打开?
- C客户端传来的中文字节流,如何在Java服务器端转换为正常的
- 哪有打折书卖呀
- 在公司局域网中使用java applet,必须使用插件吧,不连接internet让客户自动下载安装怎么做呀,就象sun那样?
- awt 中FileDialog导致死机问题
- 用swing mysql 写了一个QQ登录界面,但是功能实现不了,不能注册用户和登录验证
- 关于打印输出程序自身代码
double f = 111231.5585;
的时候,计算机实际存储的是:
double f = 111231.558499999999185092747211456298828125所以后面你就理解了。要解决这个问题,只能:
BigDecimal b = new BigDecimal("111231.5585");