开发者

Rounding a double

开发者 https://www.devze.com 2023-01-25 12:21 出处:网络
Hey guys, I am trying to round to 3 decimal places. I used the following code. this.hours = Round(hours + (mins / 60), 3);

Hey guys, I am trying to round to 3 decimal places.

I used the following code.

this.hours = Round(hours + (mins / 60), 3);

B开发者_JAVA百科ut it's not working. Where have I gone wrong? Thanks


You can use this function:

 public static double Round(double number, int decimals)
    {
    double mod = Math.pow(10.0, decimals);
    return Math.round(number * mod ) / mod;
    }


First thing is that all your variables are int so the result of your division is also an int, so nothing to Round.

Then take a look to: How to round a number to n decimal places in Java


If mins is an integer, then mins / 60 will result in an integer division, which always results in 0.

Try changing from 60 to 60.0 to make sure that the division is treated as a floating point division.

Example:

int hours = 5;
int mins = 7;

// This gives 5.0
System.out.println(Math.round(1000 * (hours + (mins / 60  ))) / 1000.0);

// While this gives the correct value 5.117.           (.0 was added)
System.out.println(Math.round(1000 * (hours + (mins / 60.0))) / 1000.0);


if mins is an integer you have to divide through 60.0 to get a floating number which you can round


try using like follow

this.hours = Round(hours + (((double)mins) / 60), 3); 


You can't. Doubles don't have decimal places, because they are binary, not decimal. You can convert it to something that does have decimal places, i.e. a base-ten number, e.g. BigDecimal, and adjust the precision, or you can format it for output with the facilities of java.text, e.g. DecimalFormat, or the appropriate System.out.printf() string.

0

精彩评论

暂无评论...
验证码 换一张
取 消