10

以下の 2 つのシナリオでは、操作は同じように見えますが、1 だけ異なる結果が生成されます。プログラミングについて説明する必要はないと思います。非常に単純です。

変数の宣言が最初で、シナリオ 1 は 1) および 2 = 2) であり、得られた結果は各シナリオの最後にリストされます。

どんな助けでも大歓迎です。

int intWorkingNumber = 176555;

int intHundreds = 1;

int intPower = 1;

1)

int intDeductionValue = (intHundreds * 100 * pow(1000, intPower));

intWorkingNumber -= intDeductionValue;  

intWorkingNumber = 76555

2)

intWorkingNumber -= (intHundreds * 100 * pow(1000, intPower))

intWorkingNumber = 76554
4

1 に答える 1

17

2 つのコード サンプルの違いは、int にキャストする場合です。

最初のバージョンは、減算する前に整数にキャストする次のコードに似ています。

intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));

2 番目のバージョンはこれに似ており、減算後に整数にキャストします。

intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));

この関数powは浮動小数点数を返します。の結果が正確に等しく1 * 100 * pow(1000, 1)ない場合(浮動小数点演算では、通常、正確な結果に依存するべきではありません)、これら 2 つは同等ではありません。100000.0000

次の簡単な例を考えてみましょう。

x = 10 - (int)0.001;   // x = 10 - 0;     => x = 10
y = (int)(10 - 0.001); // y = (int)9.999; => y = 9
于 2012-08-12T10:12:12.437 に答える