當前位置:首頁 » 編程語言 » c語言精度
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言精度

發布時間: 2022-01-20 00:27:00

1. c語言中float精度問題

浮點數不是連續值,有一定精度,特點是動態范圍大。它還沒有int的精度高,因為int是32位表示,float只有23位有效值,其他是符號位和指數。
既然計算得不到12.10,就是浮點數不能精確表示12.10。
c
=
12.099998精度也很高了,只差0.000002,差值很小了

2. c語言裡面的雙精度型和長精度型有什麼區別

其實就是有效位數不一樣。
浮點型變數分為單精度(float)、雙精度(double)和長雙精度(long double)3類。在Turbo C 中:
比特(位)數 有效數字
float 32 6-7
double 64 15-16
long double 128 18-19
ANSI C 並未具體規定每種類型數據的長度、精度、數值范圍,有的系統將double所增加的32位全用於存放小數部分,這樣可以增加數值的有效范圍,減少舍入誤差。有的系統則將所增加的位(bit)一部分存放指數部分,這樣可以擴大數值范圍

3. c語言精度問題:是什麼意思干什麼的

基本上同意樓上的,不過,原程序:
return(x>eps)-(x<-eps) 的意思是X如果小於eps,那麼返回值為0,這個寫法是沒有問題的。

4. 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);
}

5. C語言%f精確度的問題

float提供7位有效位,這七位包括小數點,後面不足六位小數補0。
應為float型數佔4個位元組,一個位元組佔8位,總共就是32位,能達到這么大的。

6. C語言出入數據精度

更主要是沒有必要,輸出需要規定精度是因為人不能手工參與。而輸入時,你鍵入的數是由你控制的,為什麼還要計算機額外控制精度?

7. 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");

8. c語言域寬與精度

首先知道%e是按科學記數法輸出值(%E同%e),1.23e+001的意思是1.23*10^1,+表示正號,對比一下這幾個輸出:

#include<stdio.h>
voidmain()
{
floatx=12.34;
printf("1.x=%e ",x); //1.直接按科學計數法表示:1.234*10^1
printf("2.x=%10.2f ",x);//2.按單精度浮點型輸出,按10位的寬度輸出,小數點後保留2位,多出的位數前邊默認補空格
printf("3.x=%010.2f ",x);//3.按單精度浮點型輸出,按10位的寬度輸出,小數點後保留2位,多出的位數前邊補0
printf("4.x=%10.2e數一下,包括空格在內一共10位,小數點後保留2位 ",x);//4.按科學計數法輸出,按10位的寬度輸出,小數點後保留2位,多出的位數前邊默認補空格
printf("5.x=%2f ",x); //5.按單精度浮點型輸出,按2位的寬度輸出,若x的長度不足2,則左補空格,大於2保持正常輸出,這里顯然x的寬度大於2了,故直接按單精度浮點型輸出
printf("6.x=%2E ",x); //6.同5,只是按科學計數法輸出
}

運行結果比對一下:

9. C語言數據類型小數精度問題!!!急

涉及到雙精度浮點數在內存中的實現過程。雙精度浮點數有三個部分,符號位、11位階碼、52位尾數。在做乘100之類的操作時,由於階碼增大,尾數要右移,會造成精度丟失。簡單來說,此時內存中存儲的數字是9.9999999......,但輸出到屏幕上時,由於保留6位,顯示為10.000000。而浮點數轉整數類型時只保留整數部分,因此9.999999......強制類型轉換後等於9。
要解決這個問題,可以人工四捨五入,即輸出(long)(TEM+0.5)的值