这个较简单,我给你一个函数:XiaoShu(保留小数前的原始数值,保留位数)
创新互联主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务南郑,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
调用方法如下:
假设你的数字存在变量A中,现在要将A中的数字保留三位小数(不四舍五入)放入B中,则
Dim A as Single, B as Single
A = 1.2568
B=XiaoShu(A,3)
Print A "保留3位小数点的结果是(不四舍五入) " B
从输出B的值可以看到,已经是三位数了(没有进位).
下面的函数复制到你的vb代码的最后即可:
Function XiaoShu(ByVal a As Single, b As Long) As Single
a = CStr(a)
XiaoShu = Left(a, InStr(1, a, ".") + b)
End Function
方法如下:
方法一:
保留三位整数:
Dim X As Single
X = Val(InputBox("输入一个任意实数!"))
Print Format(X, "000")
保留三位小数:
Dim X As Single
X = Val(InputBox("输入一个任意实数!"))
Print Format(X, ".000")
方法二:
用Format函数,比如通过text输入,转换后在窗体打印:Private Sub Command1_Click()
n = Text1.Text
t = Format(n, "000.###")
Print t
End Sub
Format函数的返回值类型是字符串(只有字符串才有可能保留后面的0),如果把它再赋值给一个数值变量(比如Single或Double),那么它又变为数值了,后面的0肯定就没了。换句话说就是Format函数完全做了无用功!
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就自动没了。
DataGridViewCellStyle方法不通用,区域性设置太麻烦了。
以下是程序方法:
可以先将数据源放入一张表中,不要直接绑定。新表是可以改string的。
那个列必须是string,不能是single
代码写在cellendedit的过程中,每次用户退出单元格编辑后引发
dim a1 as single
dim a2 as string
Try
a1=csng(当前单元格值)
Catch ex As Exception
MessageBox.Show("输入条件不符合要求!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
if a11 then
a2=formate(a1,"0.0000")
else
....
endif
完事后a2赋值给当前单元格即可。