4
我有一個奇怪的問題。下面是我的代碼部分:
1100 * 0.03 = 33:地板vs詮釋差異
int temp=1100;
int foo=floor(0.03*temp);
int foo1=0.03*temp;
if(foo-foo1){
cout<<foo<<endl;
cout<<foo1<<endl;
}
如果3的temp
=整數%然後foo
從foo1
由1
例如不同。 foo
= 33 foo1
= 32。
另外,如果我把它寫這樣的:
int foo=floor(0.03*1100);
int foo1=0.03*1100;
有沒有這樣的問題。
爲什麼?
Casting into'int'向下舍入爲零,而「floor()」總是向下舍入(向負無窮大) – Leon
您正在使用哪種編譯器?無法在此處重現它:http://coliru.stacked-crooked.com/a/2df015f881f60122 – alain
代碼塊16.01 –