Truncating fractions
3 ビュー (過去 30 日間)
古いコメントを表示
If A I have like this
>> A=[0.0001 -0.0012 1.0005 0.0040 1.4125]
A =
0.0001 -0.0012 1.0005 0.0040 1.4125
I want to have A values like this
0.00 0.00 1.00 0.00 1.41
How to do in MATLAB ?
0 件のコメント
採用された回答
Matt Fig
2011 年 4 月 7 日
Ar = round(A*100)/100
.
.
.
EDIT
Raviteja, the above command does store your values as you want. The problem is not with the values, but with how the values are displayed in MATLAB. You cannot make MATLAB display the values in just any way you want. The closest you can get is:
format bank
Ar = round(A*100)/100
Ab = abs(A) %This looks like what you want, but the full value is there.
2 件のコメント
Matt Fig
2011 年 4 月 7 日
It looks like it is working to me. Did you mean that you want to print out the array? That is a different question.
sprintf('%3.2f ',abs(A.'))
その他の回答 (2 件)
Oleg Komarov
2011 年 4 月 7 日
Matt's solution is working. Your question isn't specific enough. You want to display, and not to truncate.
A=[0.0001 -0.0012 1.0005 0.0040 1.4125]
sprintf('%4.2f ',A)
Oleg
2 件のコメント
Walter Roberson
2011 年 4 月 7 日
Raviteja, it is impossible for binary value representation in *any* programming language to store 1.41 _exactly_.
Walter Roberson
2011 年 4 月 7 日
What you would like to do cannot be done in any finite binary number representation system. 1/10 is an infinitely repeating number in binary, just the same way that 1/7 is an infinitely repeating number in decimal.
You can represent A to two decimal places as character strings for display purposes, but you will not be able to truncate to two decimal places numerically in binary.
>> sprintf('%.53g', 1.41)
ans =
1.4099999999999999200639422269887290894985198974609375
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!