パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

0.01を10000回足したら100.003になる」記事へのコメント

  • by tori_sanpo (39645) on 2018年11月19日 15時43分 (#3517918) 日記

    COBOL爺:「儂の出番かのぅ」

    • by Anonymous Coward

      十進BASIC: 「お前の出番はない」
      # MSX-BASICの浮動小数点はBCD(二進化十進数)だったので意味が分からなかったAC

      • by miyuri (33181) on 2018年11月19日 17時47分 (#3517997) 日記

        Visual Studio 2017方面なら、Decimal型というモノが有った。

        親コメント
        • by Anonymous Coward

          .NET関連なら、PowerShellで簡単に確認出来るのでやってみた。

          まず、#3517959 [srad.jp]の通り、同じになるか確認でdouble型でやってみる。
          PS> 100,1000,10000|%{1..$_|%{[double]$x=0}{$x+=0.01}{"{0}:{1}"-f$_,$x}}
          100:1
          1000:9.99999999999983
          10000:100.000000000014
          日記と同じ結果。

          内部保持可能な17桁を確認するために書式指定すると下記のように。
          PS> 100,1000,10000|%{1..$_|%{[double]$x=0}{$x+=0.01}{"{0}:{1:G17}"-f$_,$x}}
          100:1.0000000000000007
          1000:9.9999999999998312
          10000:100.00000000001425

          本題のdecimal型
          PS> 100,1000,10000|%{1..$_|%{[decimal]$x=0}{$x+=0.01}{"{

※ただしPHPを除く -- あるAdmin

処理中...