- C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
777 :デフォルトの名無しさん[sage]:2016/01/02(土) 21:08:13.71 ID:8GFmFo5+ - 下記の式で360を3.5で割った時だけ剰余の結果がおかしくなります。
誤差を除けば0になるはずです。 y = 720.0 % (360.0 / 3.1); // y = 23.2258064516129 y = 720.0 % (360.0 / 3.2); // y = 45 y = 720.0 % (360.0 / 3.3); // y = 65.4545454545454 y = 720.0 % (360.0 / 3.4); // y = 84.7058823529411 y = 720.0 % (360.0 / 3.5); // y = 102.857142857143 ←これの結果がおかしい y = 720.0 % (360.0 / 3.6); // y = 20 y = 720.0 % (360.0 / 3.7); // y = 38.918918918919 y = 720.0 % (360.0 / 3.8); // y = 56.8421052631578 y = 720.0 % (360.0 / 3.9); // y = 73.8461538461539 y = 720.0 % (360.0 / 4.0); // y = 0 で、360.0/3.5の結果である102.857142857143の末尾の数字を 変えながらテストすると、 y = 720.0 % 102.857142857140; // y = 1.99662508748588E-11 y = 720.0 % 102.857142857141; // y = 1.30029320644098E-11 y = 720.0 % 102.857142857142; // y = 6.03961325396085E-12 y = 720.0 % 102.857142857143; // y = 102.857142857142 ←これの結果がおかしい y = 720.0 % 102.857142857144; // y = 102.857142857136 ←これの結果がおかしい y = 720.0 % 102.857142857145; // y = 102.85714285713 ←これの結果がおかしい y = 720.0 % 102.857142857146; // y = 102.857142857124 ←これの結果がおかしい y = 720.0 % 102.857142857147; // y = 102.857142857118 ←これの結果がおかしい と、102.857142857143以上になるとうまく計算できないことが分かりました。 でも何故なんでしょうか。
| - C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
780 :デフォルトの名無しさん[sage]:2016/01/02(土) 21:25:12.47 ID:8GFmFo5+ - >>778
その仕様を教えて頂けると助かります。
| - C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
782 :デフォルトの名無しさん[sage]:2016/01/02(土) 21:35:34.44 ID:8GFmFo5+ - >>779
納得しました。 720 - 102.857142857143 * 7になる直前って事みたいですね。 ありがとうございました。
|
|