LoginSignup
1
1

More than 5 years have passed since last update.

X = 4.3 - 4.2 このとき、Xの値は?(後編)

Last updated at Posted at 2015-06-03

前回までの記事
X = 4.3 - 4.2 このとき、Xの値は?(前編)

前編では、コンピュータで小数どうしの計算を行うと、誤差が生じることを紹介しました。
後編は、それに対する対策を1つ紹介します。

手順1:Chocolateyをインストール

install_chocolatey.ps1
#PowerShellを管理者にて実行しておく
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

手順2:Haskell Platformをインストール

install_haskellplatform.ps1
choco install haskellplatform

手順3:以下の関数をPowerShellで定義

有理数計算or有理数どうしの等値判定
filter :=([string]$compare){
  $left = [Double](ghc -e "fromRational($_::Rational)")
  if($compare -eq ""){
    $left
  }else{
    $right = [Double](ghc -e "fromRational($compare::Rational)")
    $left -eq $right
  }
}

他にも「:!=」「:<=」・・・といったような関数を同様に用意すれば、一通りの比較演算はできそうです。

手順4:使用例(PowerShell)

有理数計算
"4.3 - 4.2" |:=
#0.1
有理数どうしの等値判定
"4.3 - 4.2" |:= "0.1"
#True

面倒くさがりな筆者にとって、割と納得のいく方法になったので、一旦記事を終わりにします。(前編で、色々試すと言いましたが、すみません)
※まあ、欲を言えば、本当は「"」も「|」も「:」も付けたくなかったのですが・・・

他のアイデアがあればご教示頂けるとありがたいです。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1