1
誰でも次のことが起こる理由を説明できますか?これはなぜ-0.0を印刷しますか?
print(-1 * (605 % 11)) #-> 0
print(-1 * (0.5*1210 % 11)) #-> -0.0
print(-1 * (0.5*1210) % 11) #-> 0.0
特に-0.0
は不可解である..
誰でも次のことが起こる理由を説明できますか?これはなぜ-0.0を印刷しますか?
print(-1 * (605 % 11)) #-> 0
print(-1 * (0.5*1210 % 11)) #-> -0.0
print(-1 * (0.5*1210) % 11) #-> 0.0
特に-0.0
は不可解である..
print(-1 * (605 % 11)) #-> 0
整数演算。ここに驚きはありません。
驚くようなところがあります。 0.5*1210 % 11
は浮動小数点のゼロと評価され、次に-1 * 0.0
の結果はの負のゼロになります。これは浮動小数点のものです。これは、いくつかの数値アルゴリズムのエッジケースを実装しやすくするために存在します。
print(-1 * (0.5*1210) % 11) #-> 0.0
ここでは、Pythonよりも浮動小数点に精通した人が驚くかもしれません。 -1 * (0.5*1210)
は-605.0
と評価されますが、-605.0 % 11
の場合、%
の演算では、分子ではなく分母と同じ符号が返されるため、-0.0
の代わりに0.0
が返されます。
-0.0を印刷しないのはなぜですか?これは、0.0を-1倍したときに得られるものです。 – Kevin
浮動小数点値で整数ではないので、演算の順番、演算子の優先順位などを順に進んでいますか? – davedwards
? – Olian04