2012-02-19 4 views
9

本質的に、生成された数が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); 

に切り上げますこれは、このためのコードの私のラインです。

+0

試してみたらどうでしたか? –

答えて

17

でも簡単かつ潜在的な高速化

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

このラウンド0 Math.floor()に向けて負の無限大に向けて丸めます。 Math.round(x - 0.5)も負の無限大に向かってラウンドします。

+9

私はこれが負の数値*を上回ると信じています*。 –

+0

私が知っていることから、私は負の価値があるとは思わない。私はそれが今まで働いている方法。私は必要な迅速な修正でした。将来問題が発生した場合は、私は変更を行います。インフォメーションのためにすべてが高すぎる –

33

これを行う機能は既にあります。それはfloorと呼ばれています:

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

誰もが常にファンシーな機能を使いたいと思っていますが、謙虚なモジュラスについては忘れてしまいます。私の解決策:

number = x-(x%1); 

は、ようにので、X = 2.999意志= 2、3.111意志= 3とを一つの剰余を減算します。これについてのクールなことは、あなたが好きなものにその1を変えるだけで、何かの倍数を切り捨てることができるということです。