小数の四捨五入/切り捨て/切り上げ (round, floor, ceil)

  切り捨て 切り上げ 四捨五入
PHP floor($x)
(int)$x
ceil($x) round($x)
Python math.floor(x) math.ceil(x) round(x)
Ruby x.floor x.ceil x.round
Perl floor($x) ceil($x)  

PHP

$x = 12.5;

var_export((int)$x); echo "\n"; // => 12
var_export(floor($x)); echo "\n"; // => 12
var_export(ceil($x)); echo "\n"; // => 13
var_export(round($x)); echo "\n"; // => 13

$x = -12.5;

// 負の切り捨ては絶対値の大きい方に丸められる
var_export(floor($x)); echo "\n"; // => -13

// 負の切り上げは0に近い方に丸められる
var_export(ceil($x)); echo "\n"; // => -12

var_export(round($x)); echo "\n"; // => -13

// intへのキャストは0に近い方に丸められる
var_export((int)$x);   echo "\n"; // => -12

Python

import math

# 切り捨て
math.floor(x)

# 切り上げ
math.ceil(x)

# 四捨五入
round(x)

Python2では結果の値としては整数になるが型はfloatのままである。 Python3では型もintになる。

roundはPython3ではちょうど中間(0.5)の場合は偶数の方に丸められる。Python2では絶対値の大きい方に丸められる。

Ruby / JRuby

floorなどは数値のオブジェクトのメソッドとして定義されている。

x = 12.5

p x.floor # => 12

p x.ceil # => 13

p x.round # => 13

x = -12.5

# 負の切り捨ては絶対値の大きい方に丸められる
p x.floor # => -13

# 負の切り上げは0に近い方に丸められる
p x.ceil # => -12

p x.round # => -13

Numeric#floor メソッド | Ruby 2.2 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.2.0/method/Numeric/i/floor.html

Numeric#ceil メソッド | Ruby 2.2 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.2.0/method/Numeric/i/ceil.html

Numeric#round メソッド | Ruby 2.2 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.2.0/method/Numeric/i/round.html

Perl

use POSIX qw(floor ceil);

my $a = 12.3;

# 切り捨て
print floor($a) . "\n"; # => 12

# 切り上げ
print ceil($a) . "\n";  # => 13

my $b = -12.3;

# 負の切り捨ては絶対値の大きい方に丸められる
print floor($b) . "\n"; # => -13

# 負の切り上げは0に近い方に丸められる
print ceil($b) . "\n";  # => -12

四捨五入は Math::Round という非標準のライブラリがあるみたいだが、標準の方法はあまりないみたい。

Math::Round | search.cpan.org
http://search.cpan.org/dist/Math-Round/Round.pm

四捨五入でも int の使用は避けるべきでは。。。? | 国民宿舎はらぺこ 大浴場
http://harapeko.asablo.jp/blog/2006/11/27/972082

小数の四捨五入・切り捨てに関する都市伝説を斬る! | Hata’s Perl Hut
http://www.mihr.net/perl/rounding.html

JavaScript

var x = 12.5

console.log(Math.floor(x)); // => 12

console.log(Math.ceil(x)); // => 13

console.log(Math.round(x)); // => 13

x = -12.5

// 負の切り捨ては絶対値の大きい方に丸められる
console.log(Math.floor(x)); // => -13

// 負の切り上げは0に近い方に丸められる
console.log(Math.ceil(x)); // => -12

// 負の四捨五入は0.5の端数は正負によらず大きい方に丸められる
console.log(Math.round(x)); // => -12
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク