番号を持っています
double num = 1.234567;
そして、私は小数点以下2桁だけを保持しようとしています
num = (int)((num * 100) + 0.5) / 100.0;
しかし、実際に取得した数値は 1.230000000001 です。0000000001 の部分を取り除くにはどうすればよいですか?
番号を持っています
double num = 1.234567;
そして、私は小数点以下2桁だけを保持しようとしています
num = (int)((num * 100) + 0.5) / 100.0;
しかし、実際に取得した数値は 1.230000000001 です。0000000001 の部分を取り除くにはどうすればよいですか?
10進基数に切り替えない限り、できません。ダブルスとフロートには小数点以下の桁数がなく、2進数の桁数があるため、値の表現が合同である場合、つまり2の負の累乗の場合を除いて、特定の小数点以下の桁数に丸めたり切り捨てたりすることはできません。
したがってDecimalFormat
、結果を表示する場合、または結果を使用BigDecimal
して計算を継続する場合は、を使用する必要があります。
値を浮動小数点に戻すことで終了するソリューションは正しくありません。
DecimalFormatを試してください:
DecimalFormat twoDp= new DecimalFormat("#.##");
Double.valueOf(twoDp.format(num));
String result = String.format("%.2f", num);
これを試してください..これで解決するはずです
Double num = //value
num = //arithmetic
String temp =num.toString().split("\\.")[0];
int precision=temp.length();
BigDecimal b =new BigDecimal(num,new MathContext(precision+2));
System.out.println(b.doubleValue());