Foxtable(狐表)用户栏目专家坐堂 → [求助]四舍五入错误


  共有4079人关注过本帖树形打印复制链接

主题:[求助]四舍五入错误

帅哥哟,离线,有人找我吗?
455631117
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:56 积分:531 威望:0 精华:0 注册:2019/7/16 14:29:00
[求助]四舍五入错误  发帖心情 Post By:2019/8/22 9:17:00 [只看该作者]

代码如下:

Dim a As Double = Math.Round(2.155, 2)
Dim s As Double = Round2(2.155, 2)
Output.Show(a)
Output.Show(s)

显示结果:

2.15
2.15

为什么显示结果不是2.16?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/22 9:20:00 [只看该作者]

正常,程序的四舍五入都这样,改改

Dim a As Double = Math.Round(2.155+0.00499, 2)
Dim s As Double = Round2(2.155+0.00499, 2)
Output.Show(a) 
Output.Show(s)


 回到顶部
帅哥哟,离线,有人找我吗?
455631117
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:56 积分:531 威望:0 精华:0 注册:2019/7/16 14:29:00
  发帖心情 Post By:2019/8/22 9:28:00 [只看该作者]

以下是引用有点蓝在2019/8/22 9:20:00的发言:
正常,程序的四舍五入都这样,改改

Dim a As Double = Math.Round(2.155+0.00499, 2)
Dim s As Double = Round2(2.155+0.00499, 2)
Output.Show(a) 
Output.Show(s)

那为什么3.155和12.155可以,2.155和10.155不行


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/22 9:33:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
455631117
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:56 积分:531 威望:0 精华:0 注册:2019/7/16 14:29:00
  发帖心情 Post By:2019/8/22 9:43:00 [只看该作者]

以下是引用有点蓝在2019/8/22 9:33:00的发言:
这种叫:四舍六入五成双

1.为什么有的数值的四舍六入五成双正常,有的不正常;

2.下面的Round2是狐表提供的四舍五入,并没有五成双,为什么也不行;

3.保留小数是只看前一位小数,为什么我改变了整数部分,没有改变前一位小数的值,但是结果却不一样。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/22 9:46:00 [只看该作者]

不同程序算法问题,没有那么多为什么。

 回到顶部