day='0001'; str2double(day) would give me 1 as answer, how do I get 0001 exact four number of digits for instance?

 採用された回答

James Tursa
James Tursa 2018 年 5 月 10 日
編集済み: James Tursa 2018 年 5 月 10 日

1 投票

Floating point variables do not have leading 0's physically stored in memory (not counting the denormalized numbers of course). So 0001 and 1 are stored exactly the same in memory. If you want to display the leading 0's then you need to use a format that specifies that on print out. E.g.,
>> day = '0001'
day =
0001
>> d = str2double(day)
d =
1
>> fprintf('%04d\n',d)
0001

2 件のコメント

Tsuwei Tan
Tsuwei Tan 2018 年 5 月 10 日
Thank you James! it seems that I have to manually check on my code, since I have some strings like '001', '0001', and '00001' that I have to count how many digits before I fprintf them back to number.
Walter Roberson
Walter Roberson 2018 年 5 月 10 日
day = '0001';
nd = length(day);
d = str2double(day);
fprintf('%0*d\n', nd, d);
... which leads one to wonder why you do not just print out day instead of the converted value.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Data Type Conversion についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by