有一个字符串包含任意格式的数字(例如,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
一种解决方案是使用通用格式字符串:
>> c = num2str(b, '%e')
c =
1.000000e+23
但是,在这种情况下,对于小订单的数量,输出看起来相当麻烦:
>> d = num2str(1, '%e')
d =
1.000000e+00
在大多数情况下,num2str
没有其他参数可以很好地生成格式良好的字符串。问题是:有没有办法消除这个9.999999999999999e+22
问题?
谢谢!
问候,伊万