任意の形式の数値を含む文字列があります (例: 12、-34.5、および 6.78e-9)。目標は、この文字列を対応する数値に変換してから、(a) 元の文字列で指定された精度が維持され、(b) 結果の文字列が適切な形式 (おそらく、最も適切な形式は、元の文字列の形式です)。str2num
問題はand num2str
;を使用して簡単に解決できると思いました。ただし、場合によっては、以下に示すように、MATLAB が最終結果をマングリングしているように見えます。
>> a = '1e23'
a =
1e23
>> b = str2num(a)
b =
1.0000e+23
>> c = num2str(b)
c =
9.999999999999999e+22
1 つの解決策は、一般的な書式文字列を使用することです。
>> c = num2str(b, '%e')
c =
1.000000e+23
ただし、この場合、出力は小さな注文の数に対してかなり面倒に見えます。
>> d = num2str(1, '%e')
d =
1.000000e+00
ほとんどの場合、num2str
パラメータを追加しなくてもかなりうまく機能し、適切にフォーマットされた文字列が得られます。問題は次のとおりです。問題を解消する方法はあり9.999999999999999e+22
ますか。
ありがとうございました!
よろしく、イワン