How do I restrict a decimal number to 2 significant decimal places?

18 ビュー (過去 30 日間)
ESHAAN
ESHAAN 2020 年 1 月 6 日
コメント済み: Guillaume 2020 年 1 月 6 日
I am using a decimal number as follows
x = 3.43 on my command window
I want this number to be used as a single data type, which means I have to write as follows
x = single(3.43)
I am trying to see how long the decimal places are precisely correct for that I am using
format long
However I am facing problem when I try to convert and decimal number into single data type equivalent decimal number
x = single(3.43)
x =
single
3.4300001, this 1 at the end is not required for my calculations, as it creates rounding off problems in my simulation(Simulink)
let me know how can I restrict this value.
Thanks

採用された回答

KSSV
KSSV 2020 年 1 月 6 日
  3 件のコメント
Stephen23
Stephen23 2020 年 1 月 6 日
"...it is not properly rounding off to the closes number."
Yes it is.
Here are the Single floating point numbers around that value:
>> x = single(3.43)
x =
3.4300001
>> x-eps(x)
ans =
3.4299998
>> x+eps(x)
ans =
3.4300003
Can you show a Single floating point number that is closer to your value? I bet you can't.
Lets take a look at the actual binary value stored in memory, as hexdecimal for convenience:
>> typecast(uint32(hex2dec('405b851f')),'single') % x
ans =
3.4300001
>> typecast(uint32(hex2dec('405b851e')),'single') % x-eps
ans =
3.4299998
>> typecast(uint32(hex2dec('405b8520')),'single') % x+eps
ans =
3.4300003
What Single floating point number do you expect to find between those possible Single floating point numbers? (hint: it would have to representable as a hexadecimal digit between 'e' and 'f', something that I am sure that many computer scientists would be very surprised to see).
Guillaume
Guillaume 2020 年 1 月 6 日
To be very clear: Computers cannot store the number 3.43 exactly as single (or double for that matter). The number will be stored as its nearest representable value which is 3.4300000667572021484375 as single, or 3.430000000000000159872115546022541821002960205078125 as double.

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

その他の回答 (0 件)

カテゴリ

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

製品


リリース

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by