How to use str2double without rounding
    조회 수: 20 (최근 30일)
  
       이전 댓글 표시
    
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
채택된 답변
  Nut
      
 2017년 1월 20일
        Hi,
maybe you need a proper set of the output display format:
https://it.mathworks.com/help/matlab/ref/format.html
The default format is "short", with the "long" format you can see more digits, look at the following example.
A = '0.219033048405430510873439814';
>> A
A =
0.219033048405430510873439814
>> str2double(A)
ans =
      0.2190
>> format long
>> str2double(A)
ans =
     0.219033048405431
댓글 수: 0
추가 답변 (1개)
  Stephen23
      
      
 2017년 1월 20일
        
      편집: Stephen23
      
      
 2017년 1월 20일
  
      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.
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Data Type Conversion에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



