※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 Pythonのround関数の議論を読んでみた ってあるけど
そもそもPythonで0.0225をプリントしてみなってんだw
(RSSしか見てない人のための追記)
恥ずかしい思いをしたおかげで勉強になった。0.49999999999999999のroundについて、PythonもJavaも正しい動きをしているらしい。
>>> 0.0225
0.022499999999999999
>>> round(0.49999999999999999)
1.0
>>> round(0.4999999999999999)
0.0
import java.math.BigDecimal;
public class Test{
public static void main(String[] args){
System.out.println("17:" + Math.round(0.49999999999999999d));
System.out.println("16:" + Math.round(0.4999999999999999d));
double d = 0.49999999999999999999999999999999d;
System.out.println("double:" + d);
BigDecimal bd = new BigDecimal(0.49999999999999999999999999999999d);
System.out.println("bd double ROUND_HALF_UP:" + bd.setScale(0, BigDecimal.ROUND_HALF_UP));
bd = new BigDecimal("0.49999999999999999999999999999999");
System.out.println("bd String ROUND_HALF_UP:" + bd.setScale(0, BigDecimal.ROUND_HALF_UP));
}
}
17:1
16:0
double:0.5
bd double ROUND_HALF_UP:1
bd String ROUND_HALF_UP:0
Python識者が現れる予感 :-)