How can decimals not be rounded
2 ビュー (過去 30 日間)
古いコメントを表示
Hi.
That is my code.
float_number = input('Please enter a float point number: ');
fprintf("The number is %.2f\n",float_number);
Sample test:
Please enter a float point number: 5.126
The number is 5.13
When the user enters a decimal, the result only keeps two decimal places, but I don't want the last decimal place to be rounded.
I don't want 5.13. I want 5.12.
How to do it?
Thank you.
0 件のコメント
採用された回答
the cyclist
2022 年 6 月 16 日
編集済み: the cyclist
2022 年 6 月 16 日
Here is one way:
roundTo = 2; % Set this value
float_number = 5.126; % User's value
% Algorithm
roundToPower = 10^roundTo;
roundedDisp = floor(float_number*roundToPower)/roundToPower;
fprintf("The number is %.2f\n",roundedDisp);
3 件のコメント
Stephen23
2022 年 6 月 16 日
"I like to know more simple method."
Ultimately all numeric -> text conversion routines perform rounding, which is a good thing because it provides the most expected output from binary floating point numbers. For example:
x = 0.3
fprintf('%.40f\n',x)
A naive "simple" approach might simply truncate this to 0.29, which is unlikely to be what the user expects.
The cyclist's approach is good, performing a few basic numeric operations is not complex.
Walter Roberson
2022 年 6 月 16 日
MATLAB does not provide any built-in function for this purpose.
For MacOS only (not sure if Linux was fixed yet), you can sprintf the number with a %.800g format, and do text manipulation on the result to get the number of decimal places you want.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!