Perlゼミ

  1. Perl
  2. 数値
  3. 浮動小数点の比較

浮動小数点を比較する

コンピュータは内部的には2進数を使って演算しているので、2進数で表現できない小数については計算の過程で誤差が生まれます。2進数の演算の過程で発生した誤差の影響を無視するためには、ある有効桁で数値を丸めて比較する必要があります。

桁を丸めるにはsprintf関数を使用します。

sprintf("%.5g", $num1);

"%.5g" は浮動小数点を有効桁5桁に丸めるという書式指定です。

サンプルプログラム

浮動小数点を比較するサンプルです。

use strict;
use warnings;

my $num1 = 1;
my $num2;

# 0.1を10回加算
for my $i (1 .. 10){
  $num2 += 0.1;
}

print "(1)誤差が生まれる。\n";
if ($num1 != $num2) {
  print '$num1と$num2は等しくない' . "\n\n";
}

print "(2)-1 浮動少数点を有効桁5桁で丸めて比較(等しい)。\n";
my $num1_cut5 = sprintf("%.5g", $num1);
my $num2_cut5 = sprintf("%.5g", $num2);

print $num1_cut5 . "\n";
print $num2_cut5 . "\n";
Perlの書籍
  • 初めてのPerl 第7版

    Perl入門 定番の一冊
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
  • 詳説 正規表現

    正規表現の詳細な解説
  • Perlの書籍販売 14冊 »
自己紹介
木本裕紀(きもとゆうき)

Twitter

フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎
Perlの求人広告募集中