c語言精度
1. c語言精度問題
當sn1和sn2是int型時,sn1+=sn2;這個語句做不到50次就會溢出,別說100次了,所以錯了……
2. C語言%f精確度的問題
float提供7位有效位,這七位包括小數點,後面不足六位小數補0。
應為float型數佔4個位元組,一個位元組佔8位,總共就是32位,能達到這么大的。
3. 如何提高c語言精確度
long double VC++ 編譯器可以有 17位有效數字。
精確到20位,需要自己 定義長數和四則運算,然後用級數展開的辦法計算平方根。
4. C語言域寬和精度問題
printf("%12.5d",XX)
域寬就是12,就是說他會輸入一個佔用12位的標准形式(默認靠右對其)
它的精度是精確到小數點後五位
格式碼:
g/G,輸出說明是『f和e中的較短者,不印無效0
p,輸出說明是『輸出地址,格式由具體實現定義
關於格式碼:
http://read.pudn.com/downloads151/ebook/654014/%E6%B4%AA%E7%BB%B4%E6%81%A9%20C%E8%AF%AD%E8%A8%80%E6%95%99%E5%AD%A6%E6%89%8B%E5%86%8C/ch4.pdf
5. c語言 精度問題
void print_double(double n)
{
static char buf[32];
snprintf(buf, sizeof(buf), "%lf", n);
char *p = buf + strlen(buf);
while (*p == '0') *p-- = 0;
printf("%s", buf);
}
6. c語言精度問題:是什麼意思干什麼的
基本上同意樓上的,不過,原程序:
return(x>eps)-(x<-eps) 的意思是X如果小於eps,那麼返回值為0,這個寫法是沒有問題的。
7. c語言中求精度問題。
用double試試
8. c語言中float精度問題
浮點數不是連續值,有一定精度,特點是動態范圍大。它還沒有int的精度高,因為int是32位表示,float只有23位有效值,其他是符號位和指數。
既然計算得不到12.10,就是浮點數不能精確表示12.10。
c
=
12.099998精度也很高了,只差0.000002,差值很小了
9. C語言數據類型小數精度問題!!!急
涉及到雙精度浮點數在內存中的實現過程。雙精度浮點數有三個部分,符號位、11位階碼、52位尾數。在做乘100之類的操作時,由於階碼增大,尾數要右移,會造成精度丟失。簡單來說,此時內存中存儲的數字是9.9999999......,但輸出到屏幕上時,由於保留6位,顯示為10.000000。而浮點數轉整數類型時只保留整數部分,因此9.999999......強制類型轉換後等於9。
要解決這個問題,可以人工四捨五入,即輸出(long)(TEM+0.5)的值
10. C語言精度問題
要規定一個精度 eps。嚴格說 1.4142 不等於 2 的平方根,本身就有誤差 0.0001。
實數比較 用誤差的絕對值 小於一個很小的數。
#include <math.h>
float a=1.0,b=1.0,c=1.4142;
float eps=0.0001; // 例如給 0.0001
if ( (fabs(a*a + b*b - c*c) < eps) ||
(fabs(b*b + c*c - a*a) < eps) ||
(fabs(c*c + a*a - b*b) < eps) ) printf("It is ....\n");