プレイ日記
say sayer.exe
マイナス0ってなんだ?
9そうだね
プレイ済み
返信[1]
親投稿
ぴくと kanau1203
-0は絶対値が0なので0と等しいですね (そういうことじゃない)
1そうだね
プレイ済み
返信[2]
親投稿
HRT-86_にでら mijuharuto
0は負の数でも正の数でもないです(中1で習う内容)
0そうだね
プレイ済み
返信[3]
親投稿
say sayer.exe
だから「マイナス」0ってなんだなのだ
0そうだね
プレイ済み
返信[4]
親投稿
say sayer.exe
ちなみに元になったtan(rad(180))は、通常は0 tan(rad(90))、tan(rad(270))は、普通なら「解なし」なのだが、なんでか変な値に 0除算エラーぐらい出してくれよぅ
0そうだね
プレイ済み
返信[5]
親投稿
say sayer.exe
軽くジャブから a=tan(rad(180))  'これで変数aに-0が代入される a=-0では無理 ? abs(a) →0 ☆値としては、やはりただの0であるということになる ? sgn(a) →-1 ☆これでaが符号を持ってるということになる(0ならば0を返す) ? a==0 →0 ☆-0と0とは別もんであるということになる
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
プチコン3号の実数型は2進数で52桁(10進数換算で15~16桁)の精度であり、小数計算においてはほとんどの場合において誤差が出ます。 TAN(RAD(360))の値が-0になる件ですが、まず知っておくべきことはこれは0とは等しくない値です。 TAN(RAD(360))の値はプチコン3号上では正しくは-2.4492935982947064e-16となっています。(当然ながら0と-2.4492935982947064e-16は等しくない) この値は誤差ゼロで数値を文字列に変換できる自作関数PSTR$を使えば表示可能です。 https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTp-ZVMIg
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
プチコン3号では表示の際に小数第9位が四捨五入されるため絶対値が9e-5未満の数は0として表示されます。 しかし、-2.4492935982947064e-16は負数であるため先頭のマイナスの符号が付いたままの状態となっているわけです。 TAN(RAD(270))がinfやエラーにならずおかしな数になっているのはこの小数を含む数値の演算誤差が理由です。 というわけで、プチコン3号で正確な値を表示する場合にはPSTR$を使うと非常に便利なのでぜひお試しください!
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
あとプチコン3号では戻り値が整数となる関数において負数の値を計算して結果として0になった場合も-0となります。 例えばROUND(-0.1)を計算すると-0になります。 これは演算誤差ではなく単にマイナス符号が付いたまま演算結果が0になったためそのようになっています。 これはPSTRを使い正確に表示しても-0のままです。(0と等しい値であるため条件判断をする場合の例外処理は不要) 何度か指摘しているけど未だにそのままになっているというところを見るとこれはバグではなく仕様かもしれません。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
訂正 2つ前のレスは絶対値が「9e-5」ではなく「5e-9」です。
0そうだね
プレイ済み
返信[10]
親投稿
say sayer.exe
答え探しの旅に出ようと思ったら、あれまぁ…
0そうだね
プレイ済み