2012-07-14 5 views
5

可能性の重複:
Why does modulus division (%) only work with integers?CとC++で浮動小数点数/複素数の除算演算がないのはなぜですか?

このコードは、CおよびCで働く++が、C#とJavaで動作しますしません:

float x = 3.4f % 1.1f; 
double x = 3.4 % 1.1; 

また、分割余りが定義されていますPythonでの真実のために。

CおよびC++での浮動小数点数および倍精度浮動小数点数についてこの演算が定義されていない理由は何ですか?

答えて

20

C委員会は、フローティングタイプのための剰余演算がRationale文書に存在しない理由のその位置を説明:

(6.5.5乗算演算子) C89委員会は、作業に%演算子を延長拒否そのような使用法は、fmod(§7.12.10.1を参照)によって提供される機能を複製するため、浮動型では使用できません。

+0

なぜ彼らがその決定を下したかについての洞察はありますか? –

+0

@Remiel *そのような使用法はfmodが提供する機能を複製するため* – ouah

+1

はい、私はその答えを読んでいます。私の質問を言い換えると、言語設計の問題として、なぜfmodの機能をコア言語に統合することが望ましくないのでしょうか? –