在 double a = {0/8, 1/8, 2/8翻譯社 3/8翻譯社 4/8翻譯社 .......} 這行程式碼中我們可以看到 {} 中所有的數字,其實都是整數!
1 / 8 = 0, 2 / 8 = 0翻譯社 ... 8/ 8 = 1, 9/ 8 = 1
現實上 double a = {0,0,0,0,0翻譯社0,0,0翻譯社1翻譯社1翻譯社1,....}
將所稀有乘32,那固然就是0,0,0,0,0,0,0,0,32,32翻譯社32,.....(雖然這不是我那位同窗想要的)
double a = {0/8翻譯社 1/8, 2/8, 3/8, 4/8, .......} (由0到79, 每個數除8)
double b[80];
問題到底泛起在那邊呢?
由於太耐冇接觸C++,忽然被問到,一時間也亳無頭緒…(有關係嗎?)
還傻傻的思慮著,是不是 int(a[i] * 32) 出了問題。
但這簡單一行,真的會有問題嗎?
憑據這個鉄則,方才阿誰問題就完全明白了!
說遇到一件很奇異的事,久久找不到問題地點。
前幾日有一名良久沒見既同窗在MSN Messager向天成翻譯公司求救翻譯
for (int i =0; i < 80; i++)
{
b[i] = int(a[i] * 32);
}
就如許思慮了15分鐘…
如許的問題也要想這麼夠,看來我照樣一隻菜島呢…
for (int i =0; i < 80; i++)
{
b[i] = int(a[i] * 32);
}
預期效果應當 0,4,8,16翻譯社24,32.....
但現實卻是 0翻譯社0翻譯社0,0翻譯社0,0,0翻譯社0,32,32,32,......
點竄後的程式碼:
double a = {(double)0/8翻譯社 (double)1/8翻譯社 (double)2/8, (double)3/8, (double)4/8, .......}
double b[80];
合法我萬念俱灰,差點就墮入自責地獄之時,天成翻譯公司終於想起來了!
又是阿誰可惡的除法運算子!!
這真的是根基中的根基哦!
在數學上 5 / 2 = 2.5, 2.5 / 2 = 1.25,這是對 / 的了解.
可是在寫程式的時刻,整數的/就回傳整數,浮點數的/就回傳浮點數。
例如:
int a = 5;
int b = 2;
a / b 就會回傳 2 這個整數~
double a = 5.0;
double b = 2.0;
a / b 則會回傳 2.5 這個浮點數
問題以下:
程序說話 - C++
要做到那位同窗想要的結果,其實十分簡單,只要告訴程式,那些數字是浮點數就能夠了!
來自: http://blog.xuite.net/lsmtom/lsmtom/21919227-C%2B%2B+%E9%99%A4%E6%B3%95%E9%81%8B%E7%AE%97%E5%AD%90%E有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931