Why is MATLAB rounding this?
조회 수: 5 (최근 30일)
이전 댓글 표시
I have a part of my code:
eps = 10^(log10(eps) + 0.125);
The program will round it off. For instance, if the original value of eps is 2, the calculated value is 133. This is rounded. If I do the same code in the command window, it gives me the correct value, which is a decimal.
If I run the code:
eps = 10^(log10(eps) - 0.125);
and the original value of eps is 0, it returns 0, and the while loop I have it in blows up.
I would like to stop it from rounding. These take place in a nested if statement, within a while loop.
댓글 수: 4
Bruno Luong
2011년 2월 13일
Please write what do you expect and you get with a concrete value for eps (and btw change the name eps to something else as Oleg suggested).
답변 (3개)
Bruno Luong
2011년 2월 13일
a = 2
fprintf('%1.16e', 10^(log10(a) + 0.125))
2.6670428643266479e+000
What's your problem???
댓글 수: 4
Oleg Komarov
2011년 2월 14일
It doesn't give me any problem. What you do before that in your code? Do you have a variable log10 defined, or a self-written log10 fcn?
Jan
2011년 2월 14일
If you use INT2STR to display the result, the printed number is rounded - read the help text of INT2STR! Use NUM2STR or SPRINTF instead to get the decimals.
Try Bruno's example and post, if it runs as wanted.
댓글 수: 0
Walter Roberson
2011년 2월 14일
Double-check to see which "format" you have in effect. And if you are using a variable for the "100" part, check the data class of the variable: if it happened to be one of the integer types then the answer would be integer.
댓글 수: 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!