Format函数的返回值类型是字符串(只有字符串才有可能保留后面的0),如果把它再赋值给一个数值变量(比如Single或Double),那么它又变为数值了,后面的0肯定就没了。换句话说就是Format函数完全做了无用功!
创新互联建站是一家专注于网站建设、成都网站制作与策划设计,西和网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:西和等地区。西和做网站价格咨询:028-86922220
Format函数的作用主要是用来控制输出格式的,不建议用来转换数据的实际格式(比如取整、四舍五入什么的)。取整用Int函数,保留小数位用Round函数。
你测试一下下面的语句就清楚了:
Dim num As Single, s As String
num = 1.17
Print Format(num, "0.000") '显示的将是1.170,说明Format函数是有效的
s = Format(num, "0.000")
Print s '显示的也是1.170, 因为s是字符型的,所以后面的0被保留了
num = Format(num, "0.000")
Print num '这次显示的将是1.17,因为num是数值型,而小数中最后面的0对于数字来说是无意义的,所以那个0就自动没了。
这是vb6显示小数的方式。自己做一个字符串处理函数吧,如果绝对值小于1,就自动加上一个0。
1)使用Format函数格式显示小数。
Format 函数,返回 Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。
Private Sub Form_Click()
Debug.Print Format(4 / 10, "0.0000")
Debug.Print Format(1 / 7, "0.######")
End Sub
2)开始菜单-控制面板-时间、语言和区域-更改日期、时间或数字格式-其它设置-零起始显示-选0.7。
我靠.你这个要求奇葩哦.都是控制一列的数据类型.你要这样.那你数据库就全部定义成双精度的类型.在读取的时候.
当前行为第一行的CTYPE(内容,De....) 忘记了.这样你第一行就是带小数点的
判断当前行数大于1.全部 CTYPE(内容,INTEGER) 就可以了. 这样一来.第二行开的的全部都是整数型的了
是因为2个DOUBLE 的失准了 浮点数是存储方式和其它不一样,它使用基数和指数两部分存储,因此计算时会出现误差。
Dim a As Variant
a = CDec(75.99)-CDec(71.84) 就可以了的
Variant 精度会更好,遇到减法的时候用可保万无一失
定义类型的时候用 Variant,要转化的时候用 CDec即可
举个例子
Dim a As Decimal = 1.999
Dim b As Decimal = Math.Round(a, 2)
结果为b = 2.00
四舍五入保留两位