プログラミングの為の数学と算数 vol.2at TECHプログラミングの為の数学と算数 vol.2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト448:434 06/03/10 21:30:52 ようするに、結果見ると、変な四捨五入じゃなくて 普通の四捨五入をやりたいって事にやっと気付いた。 すまんな。 449:434 06/03/10 21:40:25 ちなみに試したコード #include <stdlib.h> int divd(int x,int y){ div_t d=div(x+y/2,y); return d.quot+(d.rem>>31); } int divd(int x,int y){ div_t d=div(x*2+y,y*2); return d.quot+(d.rem>>31); } 結果はどっちも >>441 と y=10では同じになる 450:434 06/03/10 22:11:31 言い訳すると >>427 で >単純に0.5を足して切り捨てると除算結果が負数の場合に問題があるのです に騙されてしまった。 単純に0.5を足して切り捨てるのをやりたかったのだろう。 ただ、X86では除算の結果が負数になる場合は余りも負数になる。 a/b= n余りsなら a = n*b + s = s+b+(n-1)*b となる修正をすればいい アセンブラで書けば、 cdq idiv sqr edx,#31 add eax,edx と4命令 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch