|
こんばんは。
>ですが(B12追加しました)
>B6 右寄せ 3.5051E+34 '= MID(A2, FIND(" ", A2) + 1, 100) + 1
>B7 左寄せ 35051000100001000100002000000000402 '= B1
>B8 左寄せ 3.5051E+34 '= B1 + 1
>B9 左寄せ 35051000100001000000000000000000000 '= TEXT(B1 + 1,0)
>B10 右寄せ 3.5051E+34 '= B1 * 1
>B11 左寄せ 35051000100001000000000000000000000 '=TEXT( B1 * 1,"#")
>B12 左寄せ 追加 35051000100001000100002000000000402 '= MID(A2, FIND(" ", A2) + 1, 100)
>で
>B6が右寄せ、B12が左寄せ
B6は、最後に +1 で算術演算とみなされます。よって、数値が返り、右寄せ
B12は、文字列の編集なので左寄せ
>B8が指数で左寄せ
これは、??? B1は、文字列ですよね?
(再現できないので、さらに再現手順を詳細に記述してください)
>B7が左寄せ、B10が右寄せ
B7は、文字列編集だから左寄せ
B10は、算術演算だから、右寄せ
>>大きい桁(35桁程度)の演算がしたいなら、
>>足し算や引き算をVBAでシュミレートしなければなりませんねえ。
>は文字列操作ではなく値操作と思うのですが
これは、昔やった縦書きの足し算(加法の場合)をVBAでコード化するのですよ
123
29 +
--------
3+9で 2で1繰り上がって・・・・ ってやつ
結果はあくまで文字列でだすのですよ!!そうしないと表現できないので・・・。
標準モジュールに
Option Explicit
'================================================================
Sub test()
Dim s1 As String
Dim s2 As String
s1 = "123"
s2 = "29"
[a1].Value = "'" & stradd(s1, s2)
s1 = "3505100010000100010000200000402111111111"
s2 = "35"
[a2].Value = "'" & stradd(s1, s2)
End Sub
'=================================================================
Function stradd(ByVal str1 As String, str2 As String) As String
Dim l1 As Long
Dim l2 As Long
Dim g0 As Long
Dim g1 As Long
Dim g2 As Long
Dim g3 As Long
l1 = Len(str1)
l2 = Len(str2)
g3 = 0
Do While l1 > 0 Or l2 > 0
If l1 > 0 Then g1 = Val(Mid(str1, l1, 1)) Else g1 = 0
If l2 > 0 Then g2 = Val(Mid(str2, l2, 1)) Else g2 = 0
g0 = g1 + g2 + g3
g3 = g0 \ 10
stradd = CStr((g0 Mod 10)) & stradd
l1 = l1 - 1
l2 = l2 - 1
Loop
If g3 > 0 Then stradd = CStr(g3) & stradd
End Function
これは、足し算ですが、引き算も掛け算も考え方は同じです。
そういや、何年か前の今頃だったなあ、
平方根を100桁(もっとだったかなあ)ぐらい計算したい
なんていうご質問があったなあ・・・。
その時も平方根の計算をシュミレートすれば という投稿を
したと思いました。
|
|