這個(gè)較簡(jiǎn)單,我給你一個(gè)函數(shù):XiaoShu(保留小數(shù)前的原始數(shù)值,保留位數(shù))
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)南鄭,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
調(diào)用方法如下:
假設(shè)你的數(shù)字存在變量A中,現(xiàn)在要將A中的數(shù)字保留三位小數(shù)(不四舍五入)放入B中,則
Dim?A?as?Single,?B?as?Single
A?=?1.2568
B=XiaoShu(A,3)
Print?A??"保留3位小數(shù)點(diǎn)的結(jié)果是(不四舍五入)?"??B
從輸出B的值可以看到,已經(jīng)是三位數(shù)了(沒有進(jìn)位).
下面的函數(shù)復(fù)制到你的vb代碼的最后即可:
Function?XiaoShu(ByVal?a?As?Single,?b?As?Long)?As?Single
a?=?CStr(a)
XiaoShu?=?Left(a,?InStr(1,?a,?".")?+?b)
End?Function
方法如下:
方法一:
保留三位整數(shù):
Dim X As Single
X = Val(InputBox("輸入一個(gè)任意實(shí)數(shù)!"))
Print Format(X, "000")
保留三位小數(shù):
Dim X As Single
X = Val(InputBox("輸入一個(gè)任意實(shí)數(shù)!"))
Print Format(X, ".000")
方法二:
用Format函數(shù),比如通過text輸入,轉(zhuǎn)換后在窗體打?。篜rivate Sub Command1_Click()
n = Text1.Text
t = Format(n, "000.###")
Print t
End Sub
Format函數(shù)的返回值類型是字符串(只有字符串才有可能保留后面的0),如果把它再賦值給一個(gè)數(shù)值變量(比如Single或Double),那么它又變?yōu)閿?shù)值了,后面的0肯定就沒了。換句話說就是Format函數(shù)完全做了無用功!
Format函數(shù)的作用主要是用來控制輸出格式的,不建議用來轉(zhuǎn)換數(shù)據(jù)的實(shí)際格式(比如取整、四舍五入什么的)。取整用Int函數(shù),保留小數(shù)位用Round函數(shù)。
你測(cè)試一下下面的語句就清楚了:
Dim num As Single, s As String
num = 1.17
Print Format(num, "0.000") '顯示的將是1.170,說明Format函數(shù)是有效的
s = Format(num, "0.000")
Print s '顯示的也是1.170, 因?yàn)閟是字符型的,所以后面的0被保留了
num = Format(num, "0.000")
Print num '這次顯示的將是1.17,因?yàn)閚um是數(shù)值型,而小數(shù)中最后面的0對(duì)于數(shù)字來說是無意義的,所以那個(gè)0就自動(dòng)沒了。
DataGridViewCellStyle方法不通用,區(qū)域性設(shè)置太麻煩了。
以下是程序方法:
可以先將數(shù)據(jù)源放入一張表中,不要直接綁定。新表是可以改string的。
那個(gè)列必須是string,不能是single
代碼寫在cellendedit的過程中,每次用戶退出單元格編輯后引發(fā)
dim a1 as single
dim a2 as string
Try
a1=csng(當(dāng)前單元格值)
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賦值給當(dāng)前單元格即可。