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)專門的取整函式 子類繼承於父類,它含有父類的部分,又做了擴充。如果子類物件賦值給父類變數,則使用該變數只能訪問子類的父類部分 因為子類含有父類的部分,所以不會有問題 但是,如果反過來,這個子類變數如果去訪問它的擴充成員變數,就會訪問不到,因為原變數不包含該部分,會記憶體越界。子類從父類繼承了所有的方法和屬性,那麼父... 一 初值明顯是 2001 但後面的註釋卻寫的是 2000二 while 迴圈的條件是誰寫的,滿足 2500時一定會滿足 2500 不滿足 2500 時也用不著判斷是否 2500 前面都是廢話 你將 2500 改為 2050 試試,應該是後面的顯示把前面顯示的頂沒了 你可以考慮下面的 for int ... 皮潔仙璧 a 是一個表示式,且並不是變數。a 僅存在一個臨時空間用於儲存表示式的運算結果,該臨時空間並不能被修改,故其不能作為賦值型別運算子的左值。如 a b c是不合法的表示式,因為 a b 只有運算結果而不能被賦值,故不能作為賦值符號的左值 牛牛牛不牛 這個語句的意思是將 5賦值給 b c然後將...C 中,為什麼子類物件可以賦值給父類物件而反過來卻不行
C語言教材練習,已賦值y 2019,為什麼輸出會從2201開始
c語言題a b c 5 這個賦值語句為什麼不合法