How to avoid e+ notation when using fprintf to print to a file
조회 수: 20 (최근 30일)
이전 댓글 표시
Hi,
I am having trouble having matlab avoid using the +e notation when trying to print a number to a txt file. Here is my code:
fid_hex = fopen('result_hex.txt','r');
fid_dec = fopen('result_dec.txt','w');
while ~feof(fid_hex)
hex_val = fgets(fid_hex);
dec_val = hex2dec(hex_val);
fprintf(fid_dec ,'%d\n',uint32(dec_val));
disp(uint32(dec_val));
end;
The disp works fine and Matlab outputs the decimal value in the exact format that I want but the fprintf simply doesn't. Any ideas how to format the fprintf to avoid the e+?
uint32(hex2dec('F4CF2F5F')) = 4107218783
I want Matlab to write 4107218783 to the file; not 4.107219e+009
Thanks!
댓글 수: 1
Walter Roberson
2011년 6월 20일
Note: as you are using text files, you should use 'rt' and 'wt' instead of 'r' and 'w' for your fopen()'s.
답변 (3개)
Walter Roberson
2011년 6월 20일
fprintf(fid_dec ,'%ld\n',uint32(dec_val));
Notice the 'l' (lower-case L) before the 'd': it needs to be used for values greater than 2^31-1
댓글 수: 2
Walter Roberson
2011년 6월 20일
Tested fine for me:
>> sprintf('%ld\n',uint32(hex2dec('F4CF2F5F')))
ans =
4107218783
Fangjun Jiang's answer worked fine for me as well.
Which MATLAB version are you using? Are you using an early version 5 release perhaps?
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Type Identification에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!