[英]Why my pow method isn't working?
我是C ++的新手,我有一個簡單的問題。 我必須將數字(1011)更改為十進制結果。 包括Cmath。 我嘗試使用pow方法,但請查看我的輸出:
碼:
char *b = "1011";
int maxPow = 3;
for (int i = 0; i < 3; ++i) {
cout << b[i] * pow(b[i], (maxPow - i) / 1.0) << endl;
}
輸出:
5.7648e+006
110592
2401
我嘗試使它像這樣:
result = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
問題出在我的陣列上嗎? 哪里? 如果可以,請你幫助我。
因此,您遇到的問題是,您正在遍歷ascii值並乘以ascii值。 嘗試類似int digit = b[i]-'0';
然后在使用b [i]的地方加上變量digit。
減去“ 0” ...表示您正在從給定字符中減去ascii值零。 因此,從'0'減去ascii值'0'會得到數值0,或從ascii'1'減去ascii'0'會得到數值1。
看看-http: //www.asciitable.com/index/asciifull.gif以獲得更好的理解。
您可以做的另一個小演示是cout b [i],您將看到打印的值48或49,因為它們分別是ascii 0和ascii 1的數值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.