JavaとかPythonのround

2007年06月06日(水) 13:27 この記事をクリップ!

Pythonのround関数の議論を読んでみたってあるけど


そもそもPythonで0.0225をプリントしてみなってんだw


(RSSしか見てない人のための追記) 恥ずかしい思いをしたおかげで勉強になった。0.49999999999999999のroundについて、PythonもJavaも正しい動きをしているらしい。


>>> 0.0225
0.022499999999999999

0.49xxxも

>>> round(0.49999999999999999)
1.0
>>> round(0.4999999999999999)
0.0


ちなみに、Javaの場合

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識者が現れる予感:-)


 
ponybadge

Powered by

Feedbacks

Tweets

Tags

Calendar