简体   繁体   中英

Rounding Down to nearest whole number - am I cheating or is this more than adequate?

Essentially, if the number generated is 2.3 then if I subtract .5 it will then be 1.8 but the rounding function will make it 2, which is what I want. Or if the answer is 2.99999 and I subtract .5, the answer is 2.49999 which should round down to 2 which is what I want. My question is if the answer is 2 even and I subtract .5, the answer is now 1.5, so will it still round up to 2.

temp1_1= Math.round(temp2_2/(360/temp_value)-.5);

this is my line of code for this.

There is already a function to do that. It's called floor :

double d = Math.floor(2.9999) //result: 2.0

Even simpler and potential faster

double d = 2.99999999;
long l = (long) d; // truncate to a whole number.

This will round towards 0. Math.floor() rounds towards negative infinity. Math.round(x - 0.5) also rounds towards negative infinity.

Everyone always wants to use fancy functions, but forgets about the humble modulus. My solution:

number = x-(x%1);

subtracts the remainder of division by one, so x = 2.999 will = 2, 3.111 will = 3 and so on. The cool thing about this is that you can round down the multiple of anything just by changing that 1 into whatever you like.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM