有効数字 今度こそ大丈夫??
まだ変なとこありましたので,書き直してみた。
うーん。なんと面倒な。。気にせずやれればいいんですが(;´▽`A`` 固定小数点でやれない数値の扱いって面倒ですね。
できるだけシンプルな方法を今後も考えます。主目的がここじゃないせいで,トライアンドエラーでしかやってない(;´▽`A``
Function 有効数字表示(値 As Variant, 桁 As Long, 指数表示 As Boolean) As String Dim Val_ As String, Format_ As String If 桁 = 1 Then Format_ = "0e-0" Else Format_ = "0." & String(桁 - 1, "0") & "e-0" Val_ = Format(CSng(値), Format_) If 指数表示 = True Then 有効数字表示 = Replace(Val_, "e", "×10^") Else Dim 数値部分, 桁部分, tmp, tmp2, tmp3, tmp4 数値部分 = Left(Val_, InStr(Val_, "e") - 1) 桁部分 = Mid(Val_, InStr(Val_, "e") + 1) 有効数字表示 = CSng(数値部分 & "e" & 桁部分) If 桁 = 1 Then Exit Function If InStr(有効数字表示, "E") = 0 Then If InStr(有効数字表示, ".") > 0 Then tmp = Len(有効数字表示) - 1 Else tmp = Len(有効数字表示) tmp = Format(CSng(数値部分) / CSng(有効数字表示), "0e-0") tmp2 = Replace(数値部分, ".", "") tmp3 = Mid(tmp, InStr(tmp, "e") + 1) Select Case tmp3 Case Is = 0 有効数字表示 = 数値部分 Case Is > 0 If tmp = 1 Then 有効数字表示 = "0." & tmp2 Else 有効数字表示 = "0." & String(tmp3 - 1, "0") & tmp2 End If Case Is < 0 tmp4 = Len(有効数字表示) If tmp4 < 桁 Then 有効数字表示 = 有効数字表示 & "." & String(桁 - tmp4, "0") End If End Select End If End If End Function
ちまちま確かめていると,間違いに気づかないのでExcelにこのFunctionを放り込んでチェック
大丈夫そうだけどなぁ(;´▽`A``