1. 程式人生 > >C++中float與double型別的精度區別

C++中float與double型別的精度區別

double精度高,有效數字15-16位,float精度低,有效數字6-7位,但是double消耗的記憶體是float的兩倍,運算速度比float慢得多,建議能用float保證精度的就用float,少用double。

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

float a=12.257902012398877;

double b=12.257902012398877;

const float PI=3.1415926;   //常量定義

cout<<setprecision(15)<<a<<endl;  //只有

6-7位有效數字,後面的就不精確

cout<<setprecision(15)<<b<<endl;  //15-16位有效數字,所以完全正確

cout<<setprecision(15)<<PI<<endl; 

return 0;

}

相關推薦

C++floatdouble型別精度區別

double精度高,有效數字15-16位,float精度低,有效數字6-7位,但是double消耗的記憶體是float的兩倍,運算速度比float慢得多,建議能用float保證精度的就用float,少用double。 #include <iostream> #

Sqldecimal、floatdouble型別區別用法

三者的區別介紹 float:浮點型,含位元組數為4,32bit,數值範圍為-3.4E38~3.4E38(7個有效位) double:雙精度實型,含位元組數為8,64bit數值範圍-1.7E308~1.7E308(15個有效位) decimal:數字型,128bit,不存

C/C++ 關於floatdouble型別二進位制的轉換實現。。

void FloatToString(float fNum,char *pStr) { unsigned int nData = ((unsigned int *)&fNum)[0]; for (int i = 0;i < 32;i ++) {

floatdouble型別區別比較

單精度浮點數在機內佔4個位元組,用32位二進位制描述。 雙精度浮點數在機內佔8個位元組,用64位二進位制描述。浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。數符佔1位二進位制,表示數的正負。指數符佔1位二進位制,表示指數的正負。尾數表示浮點數有效數字

C#boolBoolean有什麼區別

    首先結論:bool和Boolean(System.Boolean)是完全一樣的  MSDN中解釋bool與Boolean的關係是:bool關鍵字是System.Boolean的別名。實際使用無任何差別。它們的成員也是一樣的。    

資料庫charvarchar型別區別

在建立資料庫表結構的時候,為了給一個String型別的資料定義一個數據庫的資料庫型別,一般參考的都是char或者varchar,這兩種選擇有時候讓人很糾結,今天想總結一下它們兩者的區別,明確一下兩者的區別。 首先明確的是,char的長度是不可變的,而varchar的長度是可

c語言floatdouble型別的理解

float:1bit(符號位)+8bit(指數位,範圍-128~127)+23bit(尾數位) double:1bit + 11bit + 52bit 例:8.25(十進位制) -----> 1000.01(二進位制)   //1x2^3 +1x2^(-2)=8.2

mysql資料庫charvarchar型別區別

在建立資料庫表結構的時候,為了給一個String型別的資料定義一個數據庫的資料庫型別,一般參考的都是char或者varchar,這兩種選擇有時候讓人很糾結,今天想總結一下它們兩者的區別,明確一下選擇塔

關於C++輸入變數型別不匹配的解決辦法

        在C++控制檯程式中,常常需要用cin輸入某個型別的變數,但是因為客戶可能輸入與變數型別不相符的情況。此時需要在處理資料前判斷輸入是否正確,不正確的時候重新輸入。         簡單的處理過程如下所示: #include <iostream>

C#using新增引用的區別

    引用是一個程式集對另外一個程式集的一個引用;A引用B,表示A需要B程式集存在才能正常工作,有可能的原因包括:資源上的,程式碼上的等等;如果查詢不到這個程式集B,程式集A將無法啟動。所以說只有添加了引用,此程式集的名稱空間才能using。那麼什麼是程式集呢? 程式集是

C++ i++ ++i 的本質區別

在某些場合部分地模擬指標的行為進行特殊資料操作的工具。Iter<_T>的程式碼如下:template<typename _T> class Iter { public: _T* p; Iter(_T* __p) : p(__p) {} Iter(const I

java floatdouble型別資料取值詳解

1、定義標準 IEEE754 在IEEE754標準中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。 float有32bit,double有64bit。它們的構成包括符號位

C#型別引用型別區別

值型別是直接儲存一個數值,而引用型別是儲存對值的引用,這兩種型別分別儲存在不用的記憶體區域。而從記憶體上看,值型別是在棧中的操作,而引用型別是在堆中的操作。值型別是具體的那個數值所佔用的空間大小,而引用

C#decimal,doublefloat區別

float 單精度浮點 32bit,double 雙精度浮點64bit,decimal是高精度 128bit,浮點型。float double 是 基本型別(primitive type),decimal不是。float 有效數字7位,範圍 ±1.5 × 10E−45 to ±3.4 ×

C#變數物件、型別類之間的區別

    在C#中,我們經常通過宣告一個變數來儲存資料,那麼什麼叫宣告(declare)變數呢?宣告變數是指在宣告一個變數時,要告訴程式這個變數的型別(type)和變數名(name),如int n。那什

JAVAfloatdouble、BigDecimal的區別及資料型別注意事項

單精度浮點數(float)與雙精度浮點數(double)的區別如下: (1)在記憶體中佔有的位元組數不同     單精度浮點數在機內佔4個位元組     雙精度浮點數在機內佔8個位元組 (2)有效數字位數不同     單精度浮點數有效數字8位     雙精度浮點數有效數字1

C++int、doublefloat。string等常見型別轉換

1、各種型別之間的相互轉換的互相轉換 int型轉string void int2str(const int &int_temp,string &string_temp) { stringstream stream;

C#StructClass的區別

而是 適用於 ack 定義 cts 多態 支持 關鍵字 for class和struct最本質的區別是class是引用類型,而struct是值類型,它們在內存中的分配情況有所區別。 什麽是class? class(類)是面向對象編程的基本概念,是一種自定義數據結構類型,通

C#outref區別

erro 變量 但是 color 賦值 運行 網上 ann amp 一、ref(參考)與out區別 1、out(只出不進) 將方法中的參數傳遞出去,在方法中將該參數傳遞出去之前需要在該方法起始賦初值;在方法外傳遞的該參數可以不用賦值; 簡單理解就是:將一個東西拋出去之前必須

C#結構的區別實例分析

類與結構 main bds nbsp 模擬鼠標 指向 img adding 區別 類與結構是C#程序設計中基本的數據類型,而初學者往往不能很好的分清二者之間的區別。本文就以附帶實例形式加以說明。具體如下: 一、基本概念: 類: 引用類型,存儲在堆中,棧中存儲引用地址