189 8069 5689

vb.net四舍六入的简单介绍

VB.net round问题

这应该是由浮点数的误差所造成的,你把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中 mod函数左右的小数是怎么处理的 如2.5 mod2的结果是?

VB6中Mod 运算符功能是两数相除求余。

如果两数中带小数,Mod 会先四舍六入取整,再按整数求余,余数带小数的话只取整数部分。

注意,如果有书说四舍五入,是错的。

在 VB6 用的是所谓银行家算法,是四舍六入:

小数部分比 0.5 小就舍(例如0.4,0.49999),比 0.5 大就进(例如0.6,0.500001),

刚好是 0.5 可能舍可能进,如果小数点前面是偶数就舍(例如2.5 得 2),是奇数就进(例如3.5 得 4)。

Mod 运算符在VB.NET中有改动,余数可以带小数。

以上资料来自:

所以2.5 mod 2结果是0

vb.net里四舍五入用什么函数(谢谢)

round是vb6.0的吧,我刚才查了一下,在vb.net里变成了枚举了成员为

成员名称 说明

RoundToBillionth 数字四舍五入为 9 个小数点位。

RoundToHundred 数字四舍五入为百位数。

RoundToHundredMillionth 数字四舍五入为 8 个小数点位

RoundToHundredth 数字四舍五入为 2 个小数点位

RoundToHundredThousand 数字四舍五入为十万位数。

RoundToHundredThousandth 数字四舍五入为 5 个小数点位。

RoundToMillion 数字四舍五入为百万位数。

RoundToMillionth 数字四舍五入为 6 个小数点位

RoundToTen 数字四舍五入为十位数。

RoundToTenBillionth 数字四舍五入为 10 个小数点位

RoundToTenMillionth 数字四舍五入为 7 个小数点位

RoundToTenth 数字四舍五入为 1 个小数点位。

RoundToTenThousand 数字四舍五入为万位数。

RoundToTenThousandth 数字四舍五入为 4 个小数点位。

RoundToThousand 数字四舍五入为千位数。

RoundToThousandth 数字四舍五入为 3 个小数点位。

RoundToUnit 数字四舍五入为个位数。要求

VB 四舍六入五取双 取余数 mod

“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是偶数)

也就是非整数时,先round函数取整,再求余。这个算法与excel 不同

round(-7.2)=-7, round(-3.5)=-3, round(2.5)=2, round(1.5)=2

这些整数再取余,应该就好理解了


本文标题:vb.net四舍六入的简单介绍
转载来源:http://cdxtjz.com/article/doshdeo.html

其他资讯