簡體   English   中英

四舍五入到最接近的整數 - 我是在作弊還是這已經足夠了?

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

本質上,如果生成的數字是 2.3,那么如果我減去 0.5,它將是 1.8,但舍入函數將使它成為 2,這就是我想要的。 或者,如果答案是 2.99999 並且我減去 0.5,那么答案是 2.49999,它應該四舍五入到 2,這就是我想要的。 我的問題是,如果答案是偶數 2 並且我減去 0.5,那么答案現在是 1.5,所以它仍然會四舍五入為 2。

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

這是我的代碼行。

已經有一個功能可以做到這一點。 它被稱為地板

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

更簡單,潛力更快

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

這將向 0 舍入。 Math.floor() 向負無窮大舍入。 Math.round(x - 0.5) 也向負無窮大舍入。

每個人都想使用花哨的函數,卻忘記了不起眼的模數。 我的解決方案:

number = x-(x%1);

將除法的余數減去 1,因此 x = 2.999 將 = 2,3.111 將 = 3,依此類推。 關於這個很酷的事情是,您可以通過將 1 更改為您喜歡的任何值來舍入任何值的倍數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM