번호가 a = 3.860575156847749e+003;
이며 일반 방식으로 표시합니다. 그래서 나는 b = sprintf('%0.1f' a);
이라고 씁니다. b
을 인쇄하면 3860.6
이 나옵니다. 이것은 완벽 해. 사실, a
은 double 유형 인 반면 b
은 char 형식으로 변환되었습니다.포맷 번호 원하는대로 번호
올바른 형식으로 할 수 있으며 최종 결과로 여전히 숫자가 있습니까?
감사합니다.
번호가 a = 3.860575156847749e+003;
이며 일반 방식으로 표시합니다. 그래서 나는 b = sprintf('%0.1f' a);
이라고 씁니다. b
을 인쇄하면 3860.6
이 나옵니다. 이것은 완벽 해. 사실, a
은 double 유형 인 반면 b
은 char 형식으로 변환되었습니다.포맷 번호 원하는대로 번호
올바른 형식으로 할 수 있으며 최종 결과로 여전히 숫자가 있습니까?
감사합니다.
글쎄, 당신은 수치 (컴퓨터의 메모리에 저장된 번호)와 진수 표현 (둘 사이에 당신이에 표시되는 문자열/문자 배열을 구별 할 필요가 당신의 화면). 숫자에 형식을 부과 할 수는 없습니다. 숫자는 다양한 방법으로 문자열로 표시 할 수있는 값을가집니다 (예 : 1234 = 1.234e3 = 12.34e2 = 0.1234e4 = ...
).
정확도가 떨어지는 숫자를 저장하려면 round
, floor
, ceil
을 사용하여 원래 숫자보다 정밀도가 낮은 숫자를 계산할 수 있습니다. 예.
a = 3.860575156847749e+003;
p = 0.1; % absolute precision you want
b = p .* round(a./p)
이 다른 방법으로 표현 될 수있는 변수 b = 3.8606e3
를 얻을 것이다, 그러나 (0을 포함해야한다 : 당신이 a = 3.860575156847749e+003
이 있고 5 개 유효 숫자가있는 번호를 원하는 경우, 당신은 round
를 사용하여 수행 할 수 있습니다 실제로 : 아주 작은 값은 때로는 피할 수없는 경우가 있습니다). 나는 그것이 실제로 당신이 원하는 것이라고 생각하지만,이 숫자는 3.86060000
과 같습니다 (동일한 값의 또 다른 문자열 표현 임). 따라서 10 진수 표현이 다음과 같이 설정되지 않았 음을 다시 한번 강조하고 싶습니다. 숫자를 반올림하지만 double을 문자열로 변환하는 함수를 암시 적으로 호출하여 sprintf
, disp
또는 일부 다른 함수로 발생합니다.
sprintf 결과는 텍스트 변수입니다. 변수를 정수 (예 :)로 선언하고 이것을 sprintf 명령의 반환 값으로 사용하려고 시도한 적이 있습니까?
이 당신에게 유용 할 수 있습니다 : http://blogs.mathworks.com/loren/2006/12/27/displaying-numbers-in-matlab/