How to use str2double without rounding
显示 更早的评论
Hi , I know this could be a possible duplicate but all those solutions stated there didn't work for me. I am using the str2double function and it always rounds the conversion to the 4 places after the decimal point. Do you guys have any idea on converting the whole string exactly the way it is without rounding ??
1 个评论
It doesn't do this for me at all.
>> str2double( '4.34576543' )
ans =
4.34576543
It seems to round to the 14th decimal place when I try it:
>> str2double( '4.34576543197566529101' )
ans =
4.34576543197567
采纳的回答
更多回答(1 个)
str2double does not do any rounding: does its documentation mention "rounding" anywhere? In fact you are just getting confused by how numbers as displayed in MATLAB. How number values are displayed is a totally different thing to how they are stored in memory. str2double reads all of those digits correctly.
>> format shortg
>> str2double('0.1234567890123456789')
ans = 0.12346
>> format longg
>> str2double('0.1234567890123456789')
ans = 0.123456789012346
There are plenty of format options: read the documentation and try some. Note that the double type is limited as to how many digits of precision it can handle. This is also not str2double's fault.
类别
在 帮助中心 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!