0

double を切り捨てたい。

例えば

double d=3.123456789087654;

小数点以下10桁に切り捨てたい場合、結果は次のようになります

result: 3.1234567890

結果として、四捨五入値は必要ありません

私は自分の機能を次のように試しました

     static double truncateDouble(double number, int numDigits) {
    double result = number;
    String arg = "" + number;
    int idx = arg.indexOf('.');
    if (idx!=-1) {
        if (arg.length() > idx+numDigits) {
            arg = arg.substring(0,idx+numDigits+1);
            result  = Double.parseDouble(arg);
        }
    }
    return result ;
 }

しかし、私が望むように適切な結果が得られませんでした..誰かが私の問題を解決するのを手伝ってくれますか?

Javaは切り捨てをサポートするような機能をサポートしていますか??

4

2 に答える 2

4

一般に、少なくとも を使用することはできませんdouble。その理由は、10 進数の桁数が少ない場合でも、多くの数値を正確に表すことができないためです。

例として 0.1 を取り上げます。最も近いのdoubleは 0.100000000000000055511151... であり、切り捨ての量が正確に 0.1 になることはありません。

于 2013-03-04T12:40:15.553 に答える
0

DecimalFormat クラスを使用できます。

double d = 3.123456789087654;

DecimalFormat newFormat = new DecimalFormat("#.##########");
double tenDecimal =  Double.valueOf(newFormat.format(d));

これにより、最後の桁が丸められます。

私はNPEに同意します。切り捨ての量が正確に 0.1 になることはありません。

唯一の方法は、文字列に変換し、部分文字列を double に変換した後に変換することです。

于 2013-03-04T12:37:14.380 に答える