在數學上 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 這個浮點數
在 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 = {(double)0/8, (double)1/8, (double)2/8, (double)3/8翻譯社 (double)4/8翻譯社 .......}
double b[80];
合法我萬念俱灰,差點就墮入自責地獄之時,天成翻譯公司終於想起來了!
又是那個可惡的除法運算子!!
前幾日有一名良久沒見既同學在MSN Messager向天成翻譯公司求救翻譯
問題到底出現在那邊呢?
由於太耐冇接觸C++,忽然被問到,一時候也亳無頭緒…(有關係嗎?)
還傻傻的思慮著,是不是 int(a[i] * 32) 出了問題。
但這簡單一行,真的會有問題嗎?
說遇到一件很奇異的事,久久找不到問題地點。
for (int i =0; i < 80; i++)
{
b[i] = int(a[i] * 32);
}
這真的是根基中的根基哦!
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翻譯社......
問題以下:
法式語言 - C++
按照這個鉄則,方才阿誰問題就完全分明了!
要做到那位同窗想要的結果,其實十分簡單,只要告知程式,那些數字是浮點數就可以了!
點竄後的程式碼:
double a = {0/8翻譯社 1/8翻譯社 2/8, 3/8, 4/8, .......} (由0到79, 每個數除8)
double b[80];
就如許思慮了15分鐘…
如許的問題也要想這麼夠,看來我照樣一隻菜島呢…
本文出自: https://blog.xuite.net/lsmtom/lsmtom/21919227-C%2B%2B+%E9%99%A4%E6%B3%95%E9%81%8B%E7%AE%97%E5%AD%90%有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931
留言列表