小数の四捨五入/切り捨て/切り上げ (round, floor, ceil) 2016/01/16
切り捨て | 切り上げ | 四捨五入 | |
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 2015/12/04
例
$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 2015/01/27
import math
# 切り捨て
math.floor(x)
# 切り上げ
math.ceil(x)
# 四捨五入
round(x)
Python2では結果の値としては整数になるが型はfloatのままである。 Python3では型もintになる。
round
はPython3ではちょうど中間(0.5)の場合は偶数の方に丸められる。Python2では絶対値の大きい方に丸められる。
Ruby / JRuby 2015/05/04
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 2016/01/16
例
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 2016/04/24
例
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