プチコン3号 SmileBASIC コミュニティトピックスー thanks_0u02015/08/04 05:25:07質問DIVについての質問です。割る数に変数を使うと、DIVがうまく動いていないように思うのですが、これは何故でしょう。もしかしてバグなのでしょうか??DIRECTモードで試してみた具体例は下記の通りです(・д・) ?10 DIV 3 3 A=3:?10 DIV A 3.33333325 13そうだね 15返信プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿スー thanks_0u02015/8/4 5:32なぜか変数同士だときちんと動作するみたいです。 A=10:B=3:?A DIV B 30そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿スー thanks_0u02015/8/4 6:37整数型でも正常みたいです。 A%=3:?10 DIV A% 30そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿あまさと しおん ShionAmasato2015/8/4 7:50A=97?333 DIV A 3.4329896 うわあ1そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿クッキー k2kkrm2015/8/4 8:33前にDIV使ったら挙動がおかしくて結局FLOORを使ったのですけど、この不具合のせいだったのかも…2そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿Godot orz_1272015/8/4 12:13結構DIV使っている気が(^^;) 幸い割る方に変数は使っていませんが。 良い情報どうもですm(__)m2そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿マギー M1912462015/8/4 18:13バグですね。 検証してみました。 どちらか一方または、両方が変数で 前(左側)が整数、後(右側)が実数なら 同じようになるみたいです。 A=3 B%=10 ? B% DIV A ? B% DIV 3.0 ともに 3.33333325 しかも、実際の実数の割り算の結果とも 少し違うみたいでした。 2そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿MIKI ifconfig2015/8/4 20:28頭痛が・・・・ マギーさんのちょっと変更で ? floor(10) div 3.0 でもイケルみたいです。 ?format$("%.18f", floor(10) div 3.0) 3.333333253860473600 3そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿スー thanks_0u02015/8/4 20:40とりあえずバグだー!ってことで、バグ保存室?にコメントして参りました。 コメントにこの記事のURLを貼り付けておきましたので、また何か詳細が解明されたときはここに書いておくと小林さんが見てくださるかもしれません(・ω・)1そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿れい rei-nntnd2015/8/4 21:14orz うんにょコンパイラ 2そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿ish owlis12015/8/4 23:11「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そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿reji Satoshi.11032015/8/4 23:11ええ!やっぱりそうなったんだ… 僕の頭がおかしいからそう感じるんだと思っていた…3そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿Oskar oskar_liebig2015/8/5 1:35空気読まず書く。 -- #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そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[13]親投稿Oskar oskar_liebig2015/8/5 10:55寝起きで気づいたのですが、もっと単純なようです。 上のPCのC言語のプログラムで 10.0f/3, 10/3.0f 10.0f/3.0f とすると例の値になりました。divの計算中に単精度浮動小数点数が紛れ込んでいるようですが、でも、何で紛れ込む? ※トピック外れの与太話。 なんとPCとC言語でも、定数を変数にしたら値が変わってしまってあわてました。これはIntelのCPU(32bit)固有の問題ということでプチコンとは全然関係なかったのですが、実は奥が深い話のようです。3そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[14]親投稿MIKI ifconfig2015/8/5 20:26すごい!! よく見つけましたね!! 合ってるのが 7桁なんで、もしかして単精度と思ったんだけど、プチコンてそもそも単精度なんか使えないよなあと思い追求しませんでした。 まさか 10f/3f とは・・・ まだまだ謎の多いプチコンですねえ 1そうだね プレイ済み2017/11/03 18:59:49に取得
プチコン3号 SmileBASIC コミュニティ返信[15]親投稿スー thanks_0u02015/8/6 8:46トピックって一つしか作れないのですね……不便(´=ω= ` ) 別トピを作るために、コメント受付を終了しますね。皆さま回答や検証をしてくださってありがとうございます!( ´ u ` )ノ2そうだね プレイ済み2017/11/03 18:59:49に取得