コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
Na ◆QoELVrBXBQCI
2019/8/12 20:04
情報交換
0.1について(3号)
A=0
A=A+0.1
A=A+0.1
...(10回書く)
PRINT A;”だよ"
IF A!=1 THEN PRINT "1じゃないよ"

1だよ
1じゃないよ
と表示されます。
0.1と書いても厳密には少しずれているのです。

コメント

アバター
Na 2019/8/12 20:07 ◆QoELVrBXBQCI
プチコンmkIIでは0.999と表示されます。
プチコン4については分かりません
アバター
シロ 2019/8/12 20:35 ◆g0oUAxBiWqcj
アバター
ジプッチャ 2019/8/12 21:14 ◆tkYhkmSxSAam
なるべく小数は使いたくない理由の一つですね。
バグとかではなく、コンピューターの魂に刻まれし宿命なので
上手に付き合っていくしかないようです><
経験上、2進数できっかり書ける小数(2のn乗分の1を単位とした小数)の時ならばこういうことは起きないようです。
アバター
高原のな 2019/8/12 21:40 ◆bY8RViwvoODw
PRINTの小数点以下10桁で丸めるおせっかい仕様でたまに困ったり……
ハマったらFORMAT$を使うという事を覚えておけばいいのかなとか……

話が若干ずれる上に最近使ってる人をあまり見かけないプチコンmkIIの話ですが、mkIIでは固定小数なのでどんなに頑張っても1/4096より細かい値は(通常は)扱えませんし、±524287の外は(通常は)扱えません。その代わり常に1/4096の精度が保証されます。もっと巨大な整数を扱うには確かおちゃめさんがそういうのを書いていたような。
他方、浮動小数はとても小さな値やとても大きな値を扱うのには都合がいいのですがそれでもやっぱり精度に限界があるので…… とはいえ「2^n分のk」(nは割と絶対値が小さめでkはあまり絶対値が大きすぎない整数)と表せる数は完全に再現可能ですね。そういう仕組みです。私はあまり詳しくないのでアバウトな言い方しかできませんけれども。
((そしてどうしても精度が必要ならば分数や10進法のシステム、文字列を使った数の表現などを用いるテクニックもあります。ガチで数の管理が重要なシステム(経理とか)が開発できるような言語では大概そんな機能が使えるようになってますね))

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -