Microsoft 製品に組み込まれている Visual Basic の実装。
Val 関数の戻り値が Double型( 小数表現+指数)であり、
非常に大きい値の変換の為に、小数部の有効桁数の
末尾で小数誤差(もしくは丸め処理)が発生。
それが、LongLong型に 整数表現として格納される際に
末尾の小数誤差がそのまま反映されたのでしょう。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
文字列(数値)を数値に変換するとエラーとなる。
Sub S_100_文字列結合によるVAL関数のテスト()Dim AA As LongLong, BB As LongLong, CC As LongLongDim DD As LongLong, EE As LongLong, FF As LongLongDim SA As LongLong, SB As LongLong, SC As LongLongDim SD As LongLong, SE As LongLong, SF As LongLongDim a1 As String, a2 As String' 20001014120480182a1 = "200010141" <br>' 9桁a2 = "20480182" <br>' 8桁SA = Val(a1 & a2) ' 20001014120480184 <br><== 1桁目がエラーとなる !!SB = Val(a1 + a2) ' 20001014120480184 <br><== 1桁目がエラーとなる !!SC = Val("20001014120480182") <br>' <== 1桁目がエラーとなる !!AA = (a1 & a2) <br>' 20001014120480182 <== 正しいBB = a1 & a2 <br>' 20001014120480182 <== 正しいCC = "20001014120480182" <br>' <== 正しいEnd Sub
Microsoft 製品に組み込まれている Visual Basic の実装。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
ありがとうございました。
大変勉強になりました。これからもよろしく,お願いします。
します。
早速の回答,ありがとうございました。
説明不足のため,誠にすみませんでした。
質問内容は,下1桁目の数値が,違っていることです。
Dim SC As LongLong
SC = Val("20001014120480182")
SC = 20001014120480184 <== 下1桁目が,2になるところが4となることです。
活用事例
・円周率の計算(10万桁程度)を勉強中で数値属性と文字属性における計算処理時間を調べています。
> 1桁目がエラーとなる !!
ローカルウィンドウの写真には、
ちゃんと SA/SB/SC にも
全桁が変換された値(LongLong型 , 型宣言文字( ^ ) )で
表示されているではないですか。
何がエラーなんでしょうか?