2011-11-11 28 views
1

私はこれを求める多くの質問があることを知っていますが、私はかなりのソリューションを試しましたが、どれが必要なのか正確には動作していないようです。浮動小数点/小数点から小数点以下3桁までを正確に丸めますか?

ほとんどのソリューションは、しかし、私のテストデータで、私はfloatを持って、仕事:0.08095238095238096

私は4にこれを丸める場合は、私が取得するように見えます。 0.081私は0.0809を持っていなければならず、最後の場所を切り上げません。

はまた、私は最高の数のこのタイプのfloatまたはdoubleを使用していますか?あなたが代わりに半分を上に丸め、4つの小数点以下を切り捨てしたいように見える

おかげ

+1

[小数点以下2桁の有効数字にダブルラウンド]の可能な重複(http://stackoverflow.com/questions/2808535/round-a-double-to-2-significant-figures-after-decimal-point ) – tchrist

答えて

7

double d = 0.08095238095238096; 
d = (long) (d * 10000)/10000.0; 

または

d = Math.floor(d * 10000)/10000.0; 

私はあなたがD = 0.0809代わりに0.809を望む意味を前提としています。

おそらくあなたは、難しい問題である3桁を考えています。

非常に良い理由がない限り、の代わりにdoubleまたはBigDecimalを使用するのが最善です。

ところで:あなたが何をしたいの明確な考えを持っていると便利であるそうでない場合、そのはそれを見つけることがはるかに困難になるだろう。 ;)

0

あなたの問題は、元の番号が間違っています。 0.809を取得する必要がある場合は、0.8095238095238096で開始する必要があります(これは0.08095238095238096ではありません)。

+3

おそらくこれは答えではなくコメントです。 ;) –

+0

正直言って、彼の質問の中で最も単純な部分が正しいことを確かめるために時間をとることさえできないならば、この疑問は少なくとも嘲りだと思います。 - アウトの答え。 – Bohemian

+0

OPが望んでいたことを明確に理解していないのは、なぜ彼は解決策を探し出すのが大変なのだろうと思っているのかということです。 –

関連する問題