Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于四舍五入误差的问题

子煜  发表于:2012-01-12 15:35:15  
复制

单价 7.705  重量 345  金额 0.705*3457=2658.22485351563 (access查询里计算的结果)

 

在EXCEL或用计算器计算结果是: 2658.225  保留二位就是  2658.23 四舍五入

 

但现在ACCESS查询里,试过很多函数和自定义函数的四舍五入方法,保留二位计算结果都是 2658.22 不能进上一。

 

Top
瞿丽忠 发表于:2012-01-12 16:27:35

数值对不对呀

0.705*3457=2658.22485351563 ????



瞿丽忠 发表于:2012-01-12 16:28:45
2658.22485351563  四舍五入 当然是 2658.22了

萧云 发表于:2012-01-12 16:52:27

在 ACCESS 中 确实是这样,实际上是≤5舍,而>5时才入,因此会发生你所说的现象。

我本人认为 ACCESS 中的取舍规则更加合理。

 

如果你非要实现你想要的,就需要编写自定义函数。

(实际上就是精度位的后面一位数据如果等于5时则把这个数字5+0.1 就可以了,然后使用 Round 函数据就会是你要的结果。)



小新 发表于:2012-01-12 18:13:49

其实也没那么复杂,你的问题我看应该是出在了字段数字类型选择不合理照成的。

 

如果计划对含有 1 到 4 位小数位的数据字段执行大量的运算,可以使用“货币”数据类型。SingleDouble 数据类型字段要求浮点运算。“货币”数据类型字段则使用较快的定点运算。
 
点击下载此附件

萧云 发表于:2012-01-12 22:09:15
 是的,小新的建议是正确的 , 如果你一定要使用双精度数据类型,那么就会发生上面所述的问题!

子煜 发表于:2012-01-13 15:49:33
但是我的金额币别是不同的

总记录:6篇  页次:1/1 9 1 :