数値フォーマッティング

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
返信する
メッセージ
作成者
ま~ちゃん

数値フォーマッティング

#1 投稿記事 by ま~ちゃん »

小数以下d桁のフォーマット
Function Fmt$(r! As Double, d As Integer) As String
r! を nnn.ddd の文字列に変換する。
d は少数以下の桁数
d=0 で小数点を含む形式に変換
d=-1 で小数点を除く整数形式に変換

Function Fmt$(r! As Double, d As Integer) As String

Dim buff As String
Dim buf1 As String
Dim buf2 As String
Dim E As Long
Dim D As Long

buff = Str$(r!)
CharLower(buff)
E = InStr(1,buff,"e")

If E Then
D = E - 1
If r! > 0 Then
If E > 16 Then D = 16
Else
If E > 17 Then D = 17
End If

buf1 = Left$(buff,D)
buf2 = Mid$(buff,E+1)
Fmt$ = buf1 + "e" + buf2
Exit Function

Else
If r! > 0 Then
D = Int(Log(r!)/Log(10))+1
Else
D = Int(Log(Abs(r!))/Log(10))+2
End If

E = d
If d < 0 Then E = 0

If r! > 0 Then
buff = Str$(r! + 5*0.1^(d+1))
Else
buff = Str$(r! - 5*0.1^(d+1))
End If

If d < -1 Then E = -1

If D < 1 Then
D = E + 2
Else
D = D + E + 1
End If

If Len(buff)<D Then D=Len(buff)
Fmt$ = Left$(buff,D)
Exit Function

End If

End Function
ま~ちゃん

対応Val関数

#2 投稿記事 by ま~ちゃん »

この関数でのフォーマットは、桁数が多い場合は指数形式に変換されるが、指数形式の数値への変換は、下記を使用できる。

hira's AB Sample Codes
http://hira.hopto.org/absample1.htm#Shisuu
返信する