出力を切り捨てる必要がある問題を解決していましたが、驚いたことに、Javaで数値を切り捨てる方法を見つけることができませんでした。
出力は、数値の後に小数点以下6桁が続く必要があります。
私が欲しいのは
double truncate(double number,int places)
、出力は
truncate(14/3.0) = 4.666666
です。
しかし、私が得ているのは
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
long factor = (long) Math.pow(10, places);
value = value * factor;
long tmp = Math.round(value);
return (double) tmp / factor;
}
// rounds( 14/3.0 , 6 ) = 4.666667
String.format
私が得ると
String.format("%.6f", 14/3.0) = 4.666667
また、Stackoverflowで見つけた、BigDecimalの使用を提案し、まったく同じ答えが得られたソリューションを試しました。
NumberFormat
同様に機能するようです
java.text.NumberFormat f = java.text.NumberFormat.getNumberInstance();
f.setMinimumFractionDigits(6);
System.out.println(f.format(14/3.0)); // 4.666667
これを行う組み込みのメソッドはありますか、それともBigIntegerのようなものを使用して独自のメソッドを作成する必要がありますか?私が間違っていることはありますか?