1樓:金色潛鳥
這同編譯器有關。
計算機用2進位制,10進位制輸入轉2進位制存放運算,2進位制轉10進位制輸出,有截斷誤差和舍入誤差,看編譯器如何處理。
我的編譯器,沒問題, 0.599999999999999 處理成 0.600000000000。
例如:#include
using namespace std;
#include
#include
main()
-------------
執**況:
enter 0.6
0.60.600000
0.600000
enter 0.6
0.6x is 0.6
x is 0.6
2樓:匿名使用者
浮點數不是精確數值,只是近似數值。
根據ieee754國際標準,常用的浮點數有兩種格式
1. 單精度浮點數(single)
用來表示帶有小數部分的實數,一般用於科學計算。
佔用4個位元組(32位)儲存空間,包括符號位1位,階碼8位,尾數23位。其數值範圍為-3.4e38~3.
4e38,單精度浮點數最多有7位十進位制有效數字,單精度浮點數的指數用“e”或“e”表示。
單精度浮點數有多種表示形式:±n.n(小數形式) ±n e ±m(指數形式) ±n.n e ±m (指數形式)
如果某個數的有效數字位數超過7位,當把它定義為單精度變數時,超出的部分會自動四捨五入。
2. 雙精度浮點數(double)
用8個位元組(64位)儲存空間,包括符號位1位,階碼11位,尾數52位。
3樓:匿名使用者
float和double都不能保證把所有的實數都準確的存入計算機中。
4樓:匿名使用者
設定下double小數點後位數呢
5樓:匿名使用者
輸入要轉換為二進位制,計算機表示的是離散的數
6樓:匿名使用者
這個無所謂啦。。。重新編譯說不定就變0.60000了。。。這個精度無傷大雅~
c++中double型數值計算結果為0為什麼輸出的不是0?
7樓:龍__鳳
#include
#include//加上標頭檔案
using namespace std;
void main()
8樓:匿名使用者
這是由於double型別的精度引起的。
在c/c++中,float和double型別,被稱為浮點型。
浮點型是c/c++中用來儲存實數的。而儲存的值,並不是實際值,而是近似值。
即,double型別和float型別儲存的值均不是準確值,而是一個和準確值接近的值。
這樣,在計算中,就會有精度缺失的情況出現,運算越多,這個精度缺失出現的概率越大。
當經過大量計算後,就可能出現結果與真實結果偏差比較大的情況,也就是實際獲得的結果並不準確。
9樓:匿名使用者
#include
#include
using namespace std;
void main()
10樓:匿名使用者
cout<< (fabs(n-0.0)<1.0e-3)< (c++)double型的資料,如何保留小數點後四位? 11樓:匿名使用者 在計算時,可以使用floor函式+0.5來實現四捨五入。 例如:double a = 13.45656789; double b; b = floor(a * 10000.000f + 0.5) / 10000.000f; /*保留小數點後四位*/ 在輸出時,直接使用printf格式輸出實現保留小數點後四位。 例如:double a = 13.45656789; printf("%.4f",a); /*保留小數點後四位*/ 12樓:匿名使用者 四捨五入 保留四位小數 #include double a = 13.45656789; double b; b = floor(a * 10000.000f + 0.5) / 10000.000f; /*保留小數點後四位*/ 13樓:大海中的漂泊船 floor(value)+floor((value - floor(value)) * 10000+ 0.5) / 10000; 防止double資料太大,乘以10000後溢位; 14樓:御風__弄影 #include cout< 這就行了 15樓: a=((int)a*10000)/10000 16樓:匿名使用者 cout< cout<
17樓:成紅微生英飆 #include #include void main() 18樓:我真是瞎填的 c++格式怎麼變成c格式了 c++中相等的兩個double數值相減為什麼輸出的不是0? 19樓:糖糖寳寳 1、因為double型別都是1.*********(若干個0和1,二進位制)乘以2的若干次冪來表示一個數,所以,和十進位制的小數勢必不能夠一一對應,因為位數有限,總要有一個精度(兩個數之間的實數是任意多的,但是很明顯double不可能表示任意多的數),那麼double的0就只是用一個近似0的數來表示的 2、浮點數比較相等的時候,不能用==比較,要採用if(abs(x-y)<=epsilon)的方式,其實epsilon是預定義的很小的數,也就是要求的精度,比如類似1e-6,也就是說,比較兩數之間的差是否在可接受的精度範圍內。 3、和0比較,就是if(abs(x)<=epsilon),絕對值小於要求精度,就可以認為是0. 20樓:匿名使用者 浮點數精度不準確,不能對浮點數進行精確的比較操作,如要一定要用浮點進行比較,可用 fabs(n-0.0)<1.0e-3; 保證在精度範圍; 21樓:匿名使用者 #include #include #include using namespace std; void main() c++ double型陣列 使用 的時候需要初始化嗎? 22樓:金色潛鳥 double 型陣列 不需要 初始化抄 ,就可以使bai用,你可以隨時用它來du儲存數值,給它zhi賦值。 視窗銷燬的時候dao double型陣列 會自動消失,(如果是區域性量,在退出區域性域時便早已釋放)。不是動態分配的動態陣列,程式設計師不需要考慮釋放。 全域性量,double 型陣列 編譯器已自動初始化為0。 23樓:德克and德華 double a[10] = ; 這樣就把這個陣列的所有元素都初始化為0.0如果是像上面這樣建立的陣列,是不用手動釋放的只有new出來的才需要釋放,不過一般情況下沒必要new 24樓:喜歡姐姐的啊白 據我所知,double一般直接就建立了,不必初始化吧 double a[2]; 這裡初始化,大概也就是賦值吧~ 25樓:匿名使用者 初始化 是個好習慣,雖然不是必須的 c++中double型資料怎麼取整數部分,就是小數後面全變成0。 26樓:小小小小吃貨丫 1、首先,定 du義一個double型變數n,儲存取整 zhi的數dao值。 2、用ceil函式對實數5.78取整,取整後的數值儲存在變版量n中。 權3、輸出取整後的數值n。 4、執行程式,輸出的值為6,這是因為ceil是對實數向上取整。 5、接著,將ceil內的數更改為5.18。 6、執行程式,看到的結果還是6,說明ceil是向上取整。 27樓:匿名使用者 floor(x)是向下取整函式,如果是負數的話,這個函式就不對了 double ceil( double x ); 向0取整,應該用這個 標頭檔案#include 28樓:匿名使用者 方法bai一:使用強制型別轉du換,強制捨去小數部分zhi。例如dao double a=3.14; int b= (int)a; 方法二:使用math.h的標 專準函式。屬 double floor(double x); double ceil(double x); 使用floor函式。floor(x)返回的是小於或等於x的最大整數。 如: floor(10.5) == 10 floor(-10.5) == -11 使用ceil函式。ceil(x)返回的是大於x的最小整數。 如: ceil(10.5) == 11 ceil(-10.5) ==-10 29樓: long long,不然string 30樓:匿名使用者 void main() 31樓:l灬順 floor(x)專門的取整函式 華師 c main函式的四種情況 static void main static int main static void main string args static int main string args 1.主程式main函式一共有以上四種版 2.一個程式中不能有兩個以上的main函式,有... 你做的是b s結構還是c s?如果是b s的話你可以在資料訪問層寫好方法直接繫結方法到下拉選單上。或者直接繫結資料庫中的某個表。如果你要手動給下拉選單繫結的話就是 下拉選單的名字.datasource 資料訪問層裡邊對應的方法名字。 能不能先儲存原來的items,然後把繫結解除,最後再把原來的ite... x y 0 x y 0 表示式,可以理解為x不等於y則該式為1,否則為0,而後面判斷表示式中 x y 也是個判斷x是否等於y的語句,x y 0則等於這個表示式為假,其值是就是0,所以等價的 x y 0 x y 0 中間兩豎表示或運算。改表示式的含義是x!y時成立。x y當x!y時也成立。故兩者等價。...c中函式引數指什麼?如何給函式的引數賦值
c中怎麼給已經手動繫結的下拉選單賦值
intx,y並已正確給變數賦值為什麼(x y 0兩豎x y 0)與表示式(x yx