トピック
スー thanks_0u0

DIVについての質問です。割る数に変数を使うと、DIVがうまく動いていないように思うのですが、これは何故でしょう。もしかしてバグなのでしょうか??

DIRECTモードで試してみた具体例は下記の通りです(・д・) ?10 DIV 3 3 A=3:?10 DIV A 3.33333325
13そうだね
プレイ済み
返信[1]
親投稿
スー thanks_0u0
なぜか変数同士だときちんと動作するみたいです。 A=10:B=3:?A DIV B 3
0そうだね
プレイ済み
返信[2]
親投稿
スー thanks_0u0
整数型でも正常みたいです。 A%=3:?10 DIV A% 3
0そうだね
プレイ済み
返信[3]
親投稿
A=97?333 DIV A 3.4329896 うわあ
1そうだね
プレイ済み
返信[4]
親投稿
前にDIV使ったら挙動がおかしくて結局FLOORを使ったのですけど、この不具合のせいだったのかも…
2そうだね
プレイ済み
返信[5]
親投稿
Godot orz_127
結構DIV使っている気が(^^;) 幸い割る方に変数は使っていませんが。 良い情報どうもですm(__)m
2そうだね
プレイ済み
返信[6]
親投稿
マギー M191246
バグですね。 検証してみました。 どちらか一方または、両方が変数で 前(左側)が整数、後(右側)が実数なら 同じようになるみたいです。 A=3 B%=10 ? B% DIV A ? B% DIV 3.0 ともに 3.33333325 しかも、実際の実数の割り算の結果とも 少し違うみたいでした。
2そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
頭痛が・・・・ マギーさんのちょっと変更で ? floor(10) div 3.0 でもイケルみたいです。 ?format$("%.18f", floor(10) div 3.0) 3.333333253860473600
3そうだね
プレイ済み
返信[8]
親投稿
スー thanks_0u0
とりあえずバグだー!ってことで、バグ保存室?にコメントして参りました。 コメントにこの記事のURLを貼り付けておきましたので、また何か詳細が解明されたときはここに書いておくと小林さんが見てくださるかもしれません(・ω・)
1そうだね
プレイ済み
返信[9]
親投稿
れい rei-nntnd
orz うんにょコンパイラ
2そうだね
プレイ済み
返信[10]
親投稿
ish owlis1
「DIVラップ関数を作れ」という、神のお告げと受け取る。 DEF _DIV(_A,_B) VAR A=FLOOR(_A),B=FLOOR(_B) RETURN A DIV B END 取り敢えず期待通りに動作確認。 ちなみに RETURN FLOOR(_A) DIV FLOOR(_B) にしたら、問題再発orz
2そうだね
プレイ済み
返信[11]
親投稿
reji Satoshi.1103
ええ!やっぱりそうなったんだ… 僕の頭がおかしいからそう感じるんだと思っていた…
3そうだね
プレイ済み
返信[12]
親投稿
Oskar oskar_liebig
空気読まず書く。 -- #include <stdio.h> int main(void) { printf("%.18f", 10.0/3.0 - (10.0/3.0 - (float)10.0/(float)3.0)); return 0; } -- > gcc diffdiv.c -o diffdiv > diffdiv 3.333333253860473600 ビンゴ。
3そうだね
プレイ済み
返信[13]
親投稿
Oskar oskar_liebig
寝起きで気づいたのですが、もっと単純なようです。 上のPCのC言語のプログラムで 10.0f/3, 10/3.0f 10.0f/3.0f とすると例の値になりました。divの計算中に単精度浮動小数点数が紛れ込んでいるようですが、でも、何で紛れ込む? ※トピック外れの与太話。 なんとPCとC言語でも、定数を変数にしたら値が変わってしまってあわてました。これはIntelのCPU(32bit)固有の問題ということでプチコンとは全然関係なかったのですが、実は奥が深い話のようです。
3そうだね
プレイ済み
返信[14]
親投稿
MIKI ifconfig
すごい!! よく見つけましたね!! 合ってるのが 7桁なんで、もしかして単精度と思ったんだけど、プチコンてそもそも単精度なんか使えないよなあと思い追求しませんでした。 まさか 10f/3f とは・・・ まだまだ謎の多いプチコンですねえ
1そうだね
プレイ済み
返信[15]
親投稿
スー thanks_0u0
トピックって一つしか作れないのですね……不便(´=ω= ` ) 別トピを作るために、コメント受付を終了しますね。皆さま回答や検証をしてくださってありがとうございます!( ´ u ` )ノ
2そうだね
プレイ済み