mysql decimal和double 在round四舍五入的问题


CREATE TABLE `testtable` (
  `id` int(11) NOT NULL,
  `pricedec` decimal(20,3) NOT NULL,
  `amount` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `testtable` (`id`, `pricedec`, `amount`) VALUES (1, 2.165, 2.165);

INSERT INTO `testtable` (`id`, `pricedec`, `amount`) VALUES (2, 2.115, 2.115);

SELECT pricedec,ROUND(pricedec,2),amount,ROUND(amount,2)  from  testtable

---------------------------------------------------------------------

amount double 类型

ROUND(amount,2) ---》2.165四舍五入之后 不对

转载于:https://my.oschina.net/lsl1991/blog/1616278

发布了150 篇原创文章 · 获赞 55 · 访问量 23万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

传统的四舍五入BigDecimal类,BUG?

10-13

想要一个跟我们传统学的四舍五入的方法,网上多说下面的方法可以用,我测了下,发现有很多问题啊。当所要求的小数位小于等于1位时没错误,但当小数位2位以上就有问题了,下面是测试用例,及结果。测试发现当所要小数位为2位时,遇到偶数进1,奇数不进。十位数不位空时也是如此。 8) 谁说下这个啥回事?顺便求其他传统格式化方法。DecimalFormat这个类也不行,奇数进1偶数不进的 [code="java"] public class test { public static void main(String[] args) { double a = 1.5; double b = 2.5; double c = 1.35; double d = 2.35; double e = 2.355; double f = 2.345; double g= 12.35; BigDecimal bigA =new BigDecimal(a).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal bigB =new BigDecimal(b).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal bigC =new BigDecimal(c).setScale(1, BigDecimal.ROUND_HALF_UP); BigDecimal bigD =new BigDecimal(d).setScale(1, BigDecimal.ROUND_HALF_UP); BigDecimal bigE=new BigDecimal(e).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigF=new BigDecimal(f).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigG=new BigDecimal(g).setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println("test A:"+bigA.doubleValue()); System.out.println("test B:"+bigB.doubleValue()); System.out.println("test C:"+bigC.doubleValue()); System.out.println("test D:"+bigD.doubleValue()); System.out.println("test E:"+bigE.doubleValue()); System.out.println("test F:"+bigF.doubleValue()); System.out.println("test G:"+bigG.doubleValue()); } } [/code] 输出结果: 想要的结果 test A:2.0 2.0 test B:3.0 3.0 test C:1.4 1.4 test D:2.4 2.4 test E:2.35 X 2.36 test F:2.35 2.35 test G:12.3 X 12.4 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览