フィルターのクリア

How to round the decimals?

129 ビュー (過去 30 日間)
Isti
Isti 2012 年 5 月 3 日
コメント済み: Walter Roberson 2021 年 5 月 18 日
I have a number X = 0.135678
Then i just want to round it become 0.14. What to do?
Use round(X) will only give "0".
Thanks before :)
  10 件のコメント
Mahaveer Singh
Mahaveer Singh 2021 年 5 月 18 日
ans=round(X,2)
Walter Roberson
Walter Roberson 2021 年 5 月 18 日
Right, these days round() in MATLAB supports passing in the number of decimal digits. When the question was originally asked, that option was not available.
Also, some of the users were needing to work in Simulink, but the round block https://www.mathworks.com/help/simulink/slref/roundingfunction.html does not support giving a number of decimal digits.

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

採用された回答

Jos (10584)
Jos (10584) 2014 年 2 月 11 日
編集済み: Stephen23 2015 年 11 月 11 日
A = [pi exp(1) 1/7]
Ndecimals = 2
f = 10.^Ndecimals
A = round(f*A)/f
  1 件のコメント
Marc Lalancette
Marc Lalancette 2015 年 10 月 13 日
Divide by f, not A.

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

その他の回答 (7 件)

Walter Roberson
Walter Roberson 2012 年 5 月 3 日
Computationally it cannot be done: binary floating point arithmetic is not able to exactly represent most multiples of 0.01.

Steven Lord
Steven Lord 2016 年 11 月 7 日
As of release R2014b you can use the round function in MATLAB to round to a specific number of decimal places.

Vladimir Melnikov
Vladimir Melnikov 2020 年 4 月 29 日
編集済み: Vladimir Melnikov 2020 年 4 月 29 日
the easiest way:
round (X,N)
e.g:
>> round(0.12345,1)
ans = 0.100000000000000
>> round(0.12345,2)
ans = 0.120000000000000
>> round(0.12345,3)
ans = 0.123000000000000
also read
>> doc round

Andrei Bobrov
Andrei Bobrov 2012 年 5 月 3 日
use roundn from Mapping Toolbox
roundn(X,-2)
  1 件のコメント
Vladimir Melnikov
Vladimir Melnikov 2020 年 4 月 29 日
roundn(1.12345,-1)
ans = 1.100000000000000
>> roundn(1.12345,-2)
ans = 1.120000000000000
>> roundn(1.12345,-3)
ans = 1.123000000000000

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


Wayne King
Wayne King 2012 年 5 月 3 日
One way here is:
X = 0.135678;
format bank;
X
Another way is:
format; %just returning the formatting
X = ceil(X*100)/100;
Probably the last way is the best because you don't have to mess with the formatting.
  2 件のコメント
Isti
Isti 2012 年 5 月 3 日
thanks :)
Jos (10584)
Jos (10584) 2014 年 2 月 11 日
Use round instead of ceil!

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


Prateek Sahay
Prateek Sahay 2016 年 11 月 7 日
If you want to round 1.556876 to three decimal places then multiply it with 1000 and the use round command and then again divide it by 1000. X=1.556876 X=X*1000 Means now X=1556.876 round(x) Means now X=1556.9 X=X/1000 Means now X=1.5569
  1 件のコメント
Walter Roberson
Walter Roberson 2016 年 11 月 7 日
Note that the result of the round() would be 1557 not 1556.9
Note that the result will not be exact. There is no way to represent exactly 1.557 in binary floating point. The closest it gets is 1.556999999999999939603867460391484200954437255859375
This will display as 1.557 in most output modes, but it will not be exactly that value.

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


Jason Garcia
Jason Garcia 2019 年 2 月 7 日
編集済み: Jason Garcia 2019 年 2 月 7 日
Maybe not exactly what you're looking for, but if you are looking for ceiling or floor measurements the below is a fun way to specifiy directly how you want to bin the array/value.
X = rand(100,1); %Rand 100 elmnt vector w/ range 0-1.
n = 100; %Use 100 for the nearest tenth.
cX = discretize(X,[0:1/n:1],[0+1/n:1/n:1]); %Rounds X UP to nearest 1/N.
%OR
fX = discretize(X,[0:1/n:1],[0:1/n:1-1/n]); %Rounds X DOWN to nearest 1/N.

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by