
正文
vb.net4舍5入 vb四舍六入
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB.net round问题
这应该是由浮点数的误差所造成的vb.net4舍5入,你把kk设为双精度浮点数,那么结果就是1.34
但是浮点数误差与精度是无关的,双精度也同样存在,继续测试你就会发现有趣的现象:
下面假定s为单精度浮点数变量,d为双精度浮点数变量,则:
s = 1.345 Round(s, 2) = 1.35 (错)
d = 1.345 Round(d, 2) = 1.34 (对)
s = 2.345 Round(s, 2) = 2.35 (错)
d = 2.345 Round(d, 2) = 2.35 (错)
s = 3.345 Round(s, 2) = 3.35 (错)
d = 3.345 Round(d, 2) = 3.34 (对)
s = 4.345 Round(s, 2) = 4.34 (对)
d = 4.345 Round(d, 2) = 4.34 (对)
可以发现这错误的发生是毫无规律的,有时候真能让人发疯vb.net4舍5入!
相关问答
Q1: 关于VB.net取整的问题
double是双精度 有效数值位52位 表示成指数的形式 即指数11位 即表示成
所以180.89305用2进制表示是10110100.1110010010011110111011001011111110110001010110110101
即
180.89305在double中存在的实际数值是
1.01101001110010010011110111011001011111110110001010110110101 *2^7
取小数点后 52位有效值后 等于10进制的180.893049999999998
所及加最后变成了 1808930.99999999998
第一次当然输出近似值1808931
第二次int函数去掉了小数点后的数int就是只取整数的部位的不是四舍五入 所以少了1
Q2: VB.NET 怎么样保留后面的小数位
保留两位小数的一般方法是四舍五入法。
保留两位小数,看千分位。是4或比4小舍去;是5或比5大舍去以后向前一位进1。
如:3.425保留两位小数就是3.43
3.421保留两位小数就是3.42
又如: 3.4263保留两位小数就是3.43
3.4233保留两位小数就是3.42
再如:3.4保留两位小数就是3.40
Q3: vb.net里四舍五入用什么函数
使用Math.Round()vb.net4舍5入,注意返回值可能为Double或Decimal。
如果取整vb.net4舍5入,第二个参数不填或者填0
默认采用 四舍六入五成双vb.net4舍5入,如果想四舍五入vb.net4舍5入,请采用MidpointRounding.AwayFromZero作为第三个参数
Dim 数字 As Double = 2.45
Dim r1 As Double = Math.Round(数字, 1, MidpointRounding.ToEven) ' r1 = 2.4 四舍六入五成双
Dim r2 As Double = Math.Round(数字, 1, MidpointRounding.AwayFromZero) ' r2 = 2.5 四舍五入
vb.net4舍5入的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb四舍六入、vb.net4舍5入的信息别忘了在本站进行查找喔。








