2017-08-05 21 views
2

私はこれがタイトルのすばらしさではないことを認識しているので、より完全に説明しようとします。Javaで他の倍精度浮動小数点数の倍数に丸めますか?

基本的に、私はclusterSizeとして知られている少量だけ変化する倍音を持っています。次に、私はcoordとして知られているマップ上の2番目の倍精度、緯度または経度を持っています。 をclusterSizeで割り切れる最も近い値に丸めたいと思いますが、簡単な方法はありませんでした。

コードを試してみました:

private double roundDown(double coord, double clusterSize) { 
    return clusterSize * Math.floor(coord/clusterSize); 
} 

そして:私が探していた結果が得られて

private double roundDown(double coord, double clusterSize) { 
    return Math.floor((coord + clusterSize/2)/clusterSize) * clusterSize; 
} 

どちらもが。この仕事を簡単に達成できるライブラリや機能を私に教えてもらえればそれは素晴らしいことです。ありがとうございました!私の理解から

+0

、それはすべてのCOORDSための予期しない値を与えるか、それだけで負の値であるない状況を処理するために覚えているが – cdo256

答えて

1

は、ここにあなたが探しているものです:

private double roundDown(double coord, double clusterSize) { 
    return coord - (coord % clusterSize); 
} 

説明:

のMod演算子(a%b)bで割った余りを返します。余りを差し引くことで、分裂を保証しています。

テストが実行されます。

coord clusterSize => result 
1.1 .2   => 1.0 
1.12 .11   => 1.1 

注:?適切coord < clusterSize

+0

シンプルでエレガントな機能を見たら、完璧な意味合いがあります。どうもありがとうございます。 – Noah

関連する問題