本文目錄一覽:
- 1、C語言pow函數
- 2、C語言pow函數取整問題求大神解答。
- 3、c語言中的pow()函數怎麼用
- 4、c語言:pow函數出現奇異現象,求助高人!
- 5、求教C語言大神,這個程序里的pow()函數的用法錯了嗎?
C語言pow函數
#includestdio.h
#includeiostream
#includemath.h
#includestring.h
using namespace std;
#define N 10
int function(char a[])
{
int i,c,sum=0;
int b[N];
c=strlen(a);
for(i=0;ic;i++)
{
if(‘A’=a[i]a[i]=’E’)
b[i]=a[i]-55;
else if(‘a’=a[i]a[i]=’e’)
b[i]=a[i]-87;
else
b[i]=a[i]-48;//因為char類型的數字0對應十進制的48,這下你就懂了吧!!!
}
coutendl;
for(i=0;ic;i++)
sum=int(sum+b[i]*pow(16,c-1-i));
return sum;
}
main()
{
char a[N];
printf(“Please input a string:\n”);
gets(a);
printf(“%d\n”,function(a));
return 0;
}
你可以試一下子,我已經再改的地方做了注釋,而且,必須將char類型數字改成int型的數字,否則會產生不確定的錯誤!!!希望滿意,給分啊親!
C語言pow函數取整問題求大神解答。
(int)強制轉成整型,如果是小數就只取整數部分。
可能有的編譯器會把100保存成99.999999吧,我推測,這樣只會取99,不精確。
改進辦法是改成(int)(pow(10,i)+0.01).
c語言中的pow()函數怎麼用
pow()函數用來求x的y次冪,x、y及函數值都是double型 ,其原型為:double pow(double x, double y)。
實例代碼如下:
#includestdio.h
#includemath.h
void main()
{
double x = 2, y = 10;
printf(“%f\n”,pow(x, y));
return 0;
}
擴展資料:
C++提供以下幾種pow函數的重載形式:
double pow(double X,int Y);
float pow(float X,float Y);
float pow(float X,int Y);
long double pow(long double X,long double Y);
long double pow(long double X,int Y);
使用的時候應合理設置參數類型,避免有多個“pow”實例與參數列表相匹配的情況。
其中較容易發生重載的是使用形如:
int X,Y;
int num=pow(X,Y);
這是一個比較常用的函數,但是編譯器會提醒有多個“pow”實例與參數列表相匹配。
可以使用強制類型轉換解決這個問題:num=pow((float)X,Y)。
參考資料來源:百度百科-POW
c語言:pow函數出現奇異現象,求助高人!
pow函數是返回實數值的函數。
原則上說,凡是返回實數值的運算,都不保證絕對沒有誤差,而只是保證誤差充分小。例如:相隨誤差的絕對值小於2的若干次方分之一,等等。
在常見的C系統中,double型的存儲形式本身,只能保證分辨精度不劣於2的54次方分之一。再考慮多步計算的誤差積累,有可能誤差比這還大一些。
故十的二次方,得到99.999999999999……,不能算它錯,因為還在誤差範圍以內。
用int()來強制類型轉換取整,是一種只舍不入的“取整”。而99.999999……,只舍不入的“取整”得到99是很正常的。只要改用“四捨五入”取整的方式,就沒有這個問題了。
如果想實現“四捨五入”的取整,可以用int(…… + 0.5),不過這種方法只適用於知道其大於零的條件下。如果有正有負的情況,就需要分情況處理。不詳述了。
還有一種“四捨五入”取整輸出的辦法是:不做類型轉換,而直接利用printf函數本身具有的舍入功能。具體是:
printf(“%3.0lf\n”,pow(10.0,n));
即可。
求教C語言大神,這個程序里的pow()函數的用法錯了嗎?
pow函數的返回值是double類型的,而你定義的j是整型的,這樣會強制進行轉換,把double轉換為int,數據就不精確了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303181.html