Javaプログラムでこの精度の低下がなぜ発生しているのか理解しようとしています。Javaプログラムエラー:精度の低下の可能性
これは誤りである:
error: possible loss of precision
int digit = num/Math.pow(10,i-1)%10;
^
required: int
found: double
1 error
これはループ
for(int i = 1; i<=String.valueOf(num).length(); i++)
{
int digit = num/Math.pow(10,i-1)%10;
//etc
}
ための内部コードクリップであるIは、整数変数として数字を維持したい、と私は外の数字を宣言しようとしましたループ、私はまた、動作しない整数にキャストしようとしました。私はそれをやってみました:魔法のように働いた
digit += num/Math.pow(10,i-1)%10; //with digit declare outside of loop
が、私が代わりに私はそれが私が後で使用できる数字を含むようにしたい、それをインクリメントする必要はありません。私がここで紛失しているものはありますか?説明してください。
使用 'INT桁= NUM /(INT)Math.pow(10、I-1)10%;'。 [Math.pow](https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#pow(double、%20double))はdoubleを返します。私は 'num'がintであると仮定しています。 – byxor
キャスティングはあなたのソリューションです。 '+ ='でのエラーの欠如については、この問題で説明されています(http://stackoverflow.com/q/8710619/5743988)。 – 4castle
可能性のある重複の可能性[精度の可能性があります - modで(しかしそれではありません)](http://stackoverflow.com/questions/37548399/possible-loss-of-precision-with-mod-but-its-not) – mdewitt