![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
double float差異 在 コバにゃんチャンネル Youtube 的最讚貼文
![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
Search
入門必備基礎知識(六) 浮點數 float 與倍精度浮點數 double 運算。HiSKIO 粉絲團▻ https://pse.is/hiskioytHi 直播學程式▻ https://pse.is/hiliveyt最 ... ... <看更多>
#1. Day9 認識float 與double - iT 邦幫忙::一起幫忙解決難題
有兩種類型的浮點類型,float和double,分別表示單精度和雙精度數。 Float 和double 用於表示實數。兩種資料型別都不精確;它們是近似型別。
對程式設計人員來說,double 和float 的區別是double 精度高,有效數字16 位,float 精度7 位。但double 消耗記憶體是float 的兩倍,double 的運算速度比 ...
#3. 為什麼Float和Double會有誤差(浮點數儲存原理) - - 點部落
大家都知道float和double會有誤差. 但原因是什麼呢? 今天就跟大家分享Float和Double會誤差的原因. 一. 浮點數介紹. 一開始先對於float和double做身家 ...
嚴格來說,float、double 與decimal 都是浮點數,但float、double 與decimal 的實作方式不同。float 與double 為二進位浮點數(Binary Floating-Pont ...
#5. 浮點數值型別- C# 參考 - Microsoft Learn
因為數值類型中的這項差異,所以當您將 double 或 float 用於十進位資料時,算術計算中可能會發生非預期的四捨五入錯誤。 最佳化效能比確保精確度更為 ...
#6. float与double的范围和精度 - 腾讯云- Tencent
float 和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对 ...
#7. 2. 浮點型
大部分平台的浮點數實現遵循IEEE 754, float 型通常是32位, double 型通常是64位。 long double 型通常是比 double 型精度更高的類型,但各平台的實現有較大差異。在 ...
#8. c語言float與double的取值區別? - 劇多
c語言float與double的取值區別? · 1、精度不一樣,float是單精度,double是雙精度; · 2、表示小數的範圍不一樣,double能表示的範圍比float大; · 3、 ...
float 是32 位IEEE 754 浮點,而double 是64 位IEEE 754 浮點。與double 相比, Float 的範圍較小。 在下面給出的示例中,我們有 double 資料型別 ...
#10. float 與double 類型區別 - 每日頭條
float 單精度浮點數在機內占4 個字節,用32 位二進位描述。 double 雙精度浮點數在機內占8 個字節,用64 位二進位描述。
#11. decimal,float和double的区别是什么? 转载
float 单精度内存占4个字节; double双精度内存占8个字节,是float型的两倍,且运算速度也比float慢得多. 结论 ...
#12. decimal,float和double的区别是什么? - 知乎专栏
float 单精度内存占4个字节; double双精度内存占8个字节,是float型的两倍,且运算速度也比float慢得多. 结论 ...
#13. 基本資料型態- Java備忘筆記 - GitBook
基本資料型態 · 布林boolean · 字元char · 整數byte, short, int ,long · 浮點數float, double · 溢位Overload.
#14. C語言浮點數(floating point)|方格子vocus
分類單精度浮點數、單精度浮點值(float) 雙精度浮點數、雙精度浮點值(double) 長雙精度浮點數、長雙精度浮點值(long double) 有效位數是什麼?
#15. 資料型態
用來表示小數值,可以區分為 float 、 double 與 long double ,越後面的型態使用 ... 以上的資料型態在記憶體中佔有的大小依編譯器而有所差異,想知道這些資料型態在 ...
#16. 【轉載】 C#中float、double以及decimal類型有何不同
在sqlserver資料庫中,float類型和double類型都可以用來表示小數類型,float類型是一種近似數值的小數類型,而decimal類型則是精確數值的小數類型。如果需要在sqlserver ...
#17. 【Java入門教學】#9 浮點數float 與倍精度浮點數double 運算
入門必備基礎知識(六) 浮點數 float 與倍精度浮點數 double 運算。HiSKIO 粉絲團▻ https://pse.is/hiskioytHi 直播學程式▻ https://pse.is/hiliveyt最 ...
#18. 【转载】 C#中float、double以及decimal类型有何不同 - 博客园
在C#语言中,float、double以及decimal类型都可以用来表示小数,但三者还是有一定的不同,有效数字为相比的话,decimal类型的有效数字最大,float类型 ...
#19. 浮點數- 維基百科,自由的百科全書
以這種表示法表示的數值,稱為浮點數(floating-point number)。 ... 由於浮點數不能表達所有實數,浮點運算與相應的數學運算有所差異,有時此差異極為顯著。
#20. 基礎部分| 《The Swift Programming Language》正體中文版
Swift 的型別是在C 和Objective-C 的基礎上提出的, Int 是整數; Double 和 Float 是浮點數; Bool 是布林值; String 是字串。Swift 還有兩個有用的集合型別, Array ...
#21. 資料型態、運算子與表示式
不同資料型態間的差異[P.55]. 整數(short int, int, long int) 的可表⽰示範圍[P.56]. 浮點數(float/double) 的表⽰示法[P.58] printf 與scanf 的格式字串[P.59].
#22. float和double的範圍和精度,Oracle的Number類型
知道了這四部分的佔位,按二進位估計大小範圍,再換算為十進位,就是你想知道的數值範圍。 對編程人員來說,double 和float 的區別是double精度高,有效 ...
#23. 你所不知道的C 語言: 浮點數運算 - HackMD
... 為IEEE-754 的float(32b) 或double(64b), 這就表示這與IEEE 754 FPU 的輸出結果會有微小的差異, ... Floating point precision is not uniformly distributed.
#24. 15. 浮點數運算:問題與限制— Python 3.11.4 說明文件
在計算機架構中,浮點數(floating-point number) 是以基數為2(二進位)的小數表示。 ... 有些程式語言預設不會顯示該差異,有些甚至是在所有的輸出模式中都不會顯示。
#25. 整數與浮點數 - WiwiHo 的競程筆記
以下是C++ 常見的浮點數型態,注意 double 的有效位數並不比 long long 來得長。 資料型態, 指數域長度(bit), 指數偏移量, 小數域長度(bit). float, 8, 127, 23.
#26. float 浮点型 - 太极创客
float 只有6-7位有效数字。这指的是总位数,而不是小数点右边的数字。在Arduino Uno中,double型与float型的大小相同,这 ...
#27. Bit - 演算法筆記
unsigned 變數與singed 變數實施位元運算,其實沒有太大差異。唯一的差異之處, ... C/C++ 程式語言當中,可以直接使用float 、 double 、 long double 建立浮點數。
#28. 單精度與雙精度是什麼意思,有什麼區別? - GetIt01
Boss呱呱:java浮點類型float和double的主要區別,它們的小數精度範圍大小是多少? 要先理解3大要點:. 小數的二進位表示法,即浮點數,IEEE 754; 浮點數如何 ...
#29. 第二章常數與變數宣告變數(variable) - 林偉川
double :倍精數(double precision floating point) 資料型別, 也是用來存放浮點數型別,. 但是小數的位數比float 多, 因此精確度更. 高。長度為8 bytes, 範圍為2.2e-308 與.
#30. Java中float和double數據類型的正確比較方式 - 人人焦點
在計算機內存中,使用IEEE 754標準格式存儲float和double數據。 ... 可以使用Math.abs()方法來計算兩個數字之間的差異,並將差異與閾值進行比較。
#31. [EXCEL VBA-1]EXCEL VBA 資料型態 - David Lu - Medium
... 浮點數,Double = 雙精度浮點數,所以單從字面上的解讀我們可以了解其中的差異 ... 今天就跟大家分享Float和Double會誤差的原因一開始先對於float和double做身家 ...
#32. Sql的decimal、float、double類型的區別 - 壹讀
三者的區別介紹. float:浮點型,含字節數為4,32bit,數值範圍為-3.4E38~3.4E38(7個有效位). double:雙精度實型,含字節數為8,64bit數值 ...
#33. 8.1. 數字型別 - PostgreSQL 正體中文使用手冊
Table 8.2. Numeric Types ; double precision. 8 bytes. variable-precision, inexact ; smallserial. 2 bytes. small autoincrementing integer ; serial.
#34. C#中decimal,double和float的區別總結 - 台部落
1.精度和位數的區別: float 單精度浮點32bit, double 雙精度浮點64bit, decimal是高精度128bit,浮點型。 float double 是基本類型(primitive ...
#35. 新手求教C: float與double(頁1) - 程式編寫- 電腦領域HKEPC ...
float 佔用空間較小,double佔用空間較多,兩者都係計小數用,但計算準確度有差別,double 用多d位但計數準d,另外用double一般會計快d,少o左 ...
#36. MySQL 中的浮點數捨入錯誤 - Navicat
以下是我用來表示差異的査詢: ... 浮點(近似值)類型是FLOAT、REAL 和DOUBLE,而定點(精確值)類型是INTEGER、SMALLINT、DECIMAL 和NUMERIC。
#37. 資料型別與運算
16, unsigned short, 0 ~ 65535. 32, unsigned long, 0 ~ 4294967295. 64, unsigned long long. 浮點數, 有, 32, float, 10 ^-38 ~10 ^38. 64, double, 10 ^-308 ~10 ^308.
#38. C语言当中int,float,double,char这四个有什么区别? - 51CTO博客
C语言当中int,float,double,char这四个有什么区别? · 1、int为整数型,用于定义整数类型的数据。 · 2、float为单精度浮点型,能准确到小数点后六位。 · 3、 ...
#39. 數字型態
FLOAT (precision) ... 若 25 <= precision <= 53 的話,則視為 DOUBLE(倍精數) ... 或「INT(5)」,都不影響它儲存數值的能力;但在顯示時,就可以發現其差異了。
#40. Float Double Decimal 区别- __XY__ - 简书
本文介绍浮点数和定点数的区别,以及float和double的区别另外介绍了decimal以及使用场景我们知道,整数在计算机内部的表示方法都是2^n + 2^n-1+......
#41. MySQL FLOAT、DOUBLE、DECIMAL(小数类型)
MySQL中使用浮点数和定点数来表示小数。 浮点类型有两种:单精度浮点数(FLOAT)和双精度浮点数(DOUBLE)。定点类型只有一种:DECIMAL。 浮点类型和定点类型都可以 ...
#42. [Mysql] 資料型態int, float, double, text, char, varchar, blob大小
[Mysql] 資料型態int, float, double, text, char, varchar, blob大小 ... FLOAT、DOUBLE、DECIMAL使用時機: ... CHAR、VARCHAR 和TEXT的差異:.
#43. java:typevariables [Jun Wu的教學網頁國立屏東大學資訊工程學 ...
double, 64 bits, 64 bits IEEE 754 floating point, 0.0 ... Java語言中有2種符點數的型態:float與double,分別實作了IEEE 754當中的單精確度與倍精確度:.
#44. FLOAT(數據類型) - 中文百科全書
可根據應用程式的需求將變數聲明為float 或double。這兩種類型之間的主要差異在於它們可表示的基數、它們需要的存儲以及它們的範圍。下表顯示了基數與存儲需求之間的 ...
#45. 第3 章變數
讀者可先不管這行程式的語法. 和意義, 此處只是為示範float 和double 的差異. 才加上此敘述。 Page 50. 50. 浮點數. ○由輸出結果可 ...
#46. 有些函式並不傳回值,這些函式必須宣告為- void - C/C++
在函式原型宣告時,第一個宣告的元素就是函式的傳回值的資料型別,任何的基本資料型別(如int, char, float, double...等)或自訂的資料型別都可以使用,但是如果函式不 ...
#47. 浮点数- MATLAB & Simulink - MathWorks 中国
MATLAB 根据适用于双精度的IEEE ® 754 标准来构造双精度(即 double )数据类型。以 double 形式存储的任何值都需要64 位,并按照下表所示进行格式化: ...
#48. C,C ++和C#中Float的定義
Float vs. Double和Int ... 浮動和雙重是類似的類型。 Float是一個單精度的32位浮點數據類型; double是一個雙精度,64位浮點數據類型。 最大的區別在於精度和範圍。 雙人: ...
#49. 浮點型 - 中文百科知識
C標準規定的浮點型有float、double、long double,和整型一樣,既沒有規定每種類型 ... 浮點數的實現在各種平台上差異很大,有的處理器有浮點運算單元(FPU,Floating ...
#50. 9-4 矩陣的內部資料型態
一般矩陣的內部資料型態都是預設成double(雙精準浮點數),但在MATLAB 5.3 版之後,也支援不同長度的整數與浮點數資料態,整理如下表: ...
#51. 浮點數型態的差異??? - Delphi K.Top 討論區
因為double /extended/real48/single 是用2進位來儲存 小數的只要是用2進位 ... 大多數的浮動小數點型態,如float, real, double之類的,都是使用IEEE ...
#52. 8.1. 数值类型 - PostgreSQL中文社区
double precision, 8 字节, 可变精度,不精确, 15 位十进制数字精度 ... PostgreSQL还支持SQL 标准表示法float 和float(p)用于声明非精确的数值类型。
#53. float和int 的比較 - 城市筆記
以下的範例,是用來示範float在表示數字和運算上的一些數字,當我們學會loop後,我會在用loop示範float和int在運算速度上的差異! CODE: #includ main (){ ...
#54. 第三章變數與運算式
浮點數資料型態(float,double) ... 精準度兩種,宣告使用的關鍵字分別為float與 double。 ... 設定字串內容,但實際上背後的運作則有一些差異,我.
#55. D2:Numpy 陣列中不同的資料型態- Python資料科學程式- Cupoy
認識NumPy 中提供的資料型態; 了解各種型態的差異與定義; 正確的比較型態判斷 ... float64, Double precision float: sign bit,11 bits exponent, 52 bits mantissa.
#56. Arduino 常數與變數 - BLOCK 學習網
float :32位元浮點數,±3.4028235×10 38 ; double:32位元倍精度浮點數,±3.4028235×10 38. 字元. char:8位元字元. Arduino 常數宣告. 在宜告變數的前面加上const 就變成 ...
#57. 程式庫函數 - IBM
您必須在程式中併入檔案math.h 。 log() 函數會傳回類型double。 log() 函數需要類型 ... strtod ()-strtof ()-strtat ()-將字串轉換成Double、Float 和Long Double
#58. C++ 的基本資料型態@ 程式手扎:: 隨意窩Xuite日誌
用 來表示小數值,可以區分為float、double與long double,float的長度 ... 以上的資料型態在記憶體中所佔有的大小依平台系統而有所差異,word的大小 ...
#59. 變數
在這個程式中, 第4 行就宣告了一個double ... double 型別的資料放到float 型別的變數中, 有 ... 資料型別有所差異, 目前您至少知道String 是.
#60. Re: [計程] 你不可不知道的double 十件事- 看板b97902HW
推LoganChien:#include <float.h> 之後,你可以用DBL_MAX 代表極大09/30 22:40 : → LoganChien:的值(double 可以表示的最大值) 09/30 22:40 ...
#61. decimal numeric 差异 - 稀土掘金
decimal numeric 差异技术、学习、经验文章掘金开发者社区搜索结果。 ... JAVA 数据类型- float/double 与BigDecimal hive 数据类型- Double,DECIMAL,Numeric 如何 ...
#62. 有關浮點數的效能 - NDark MSN Live Space
不若使用的是float與double,在FPU裡面都會被轉為一個10byte的浮點數值來作計算。因此差別指在於儲存空間而已。 若是把SIMD這個函式庫(單指令存取多筆 ...
#63. C 速查手冊- 單元2 - 基本資料型態 - 程式語言教學誌
C 語言的浮點數型態可概略分成float 、 double 、 long double 幾類,其中float 、 double 、 long 等都為關鍵字。 float 被稱為單精確度浮點實數,佔4 個byte 的記憶 ...
#64. 【觀念】基本常用資料型態: int, float, double,char, id
sum、Sum、SUM 在ObjC中被判定是三種不同的變數。 所以請務必檢查命名大小寫的差異。 然而撰寫程式有一些潛規則在: AddressBook (起始字大寫可能是類別 ...
#65. C語言
有差異。 ... 所有浮點型態(float)→皆轉換為double型態。 ▻ 一但有double運算元→其它運算元皆轉換為double。 ▻ 一但有long運算元→其它運算元皆 ...
#66. c# 減法問題 - 藍色小舖
對於現在的機器來說記憶體的差別也可以為忽略... 系統預設的小數型態是double (就是如果數值11.0 沒有特定加上11.0f (float) 11.0m (decimal) ...
#67. 如何判斷兩個浮點數是否相等?是否能整除?相除後餘數是多少?
為什麼0.1 + 0.2 != 0.3 ?? https://magiclen.org/float-precision ... Rust效能分析:靜態變數和常數的效能有差異嗎? 2019 年2 月3 日.
#68. 陣列之進階
基本型態變數:char、short、int、long、float、double x[10]; ... char **argv); 的宣告, 其中char *argv[] 與char **argv 有何差異? 第一個是ARRAY ...
#69. [C++][筆記]const使用方式 - Script Jerks
說明:概念與一般變數相差無幾,不過reference與pointer的差異在於constant reference ... void f() const; int g() const; double h(float) const; ...
#70. Java 中concat() 和+ 運算符的區別 - Techie Delight
否則,所有原始類型( int , char , double , 或者 float ) 通過調用關聯的相應轉換方法轉換為字符串 Wrapper 班級( Integer , Character , Double , Float )。
#71. Kotlin 教學【從零開始學Kotlin 程式設計】 基本資料型態:整數
數值資料類型. 數值資料類型,有Int、Float、Long、Short、Byte、Double,除了整數與浮點數差別外, ...
#72. part1-基礎資料型態與四則運算式 - winage的部落格
浮點數, float, 4 bytes, ±3.4×10 -38 ~ ±3.4×10 38 (小數點下有效位數約7位). 倍精確度浮點數, double, 4 bytes, ±1.7×10 -308 ~ ±1.7×10 308
#73. java double 浮點數運算不準確問題 - 聽巴哈寫程式
double 跟float 的運算本來就不是一種精確性的運算 ... 無法精準的狀況為什麼會有這樣的差異用幾個簡單的式子來說明因為在Java中浮點數是這樣產生的
#74. Python 101 基礎教學(2) - 變數與資料型態 - June Monster
不同程式語言的資料型態稍有差異但大同小異,不外乎是整數、小數、布林 ... 整數int、浮點數double、字串str、布林值bool、列表list、tuple(不會 ...
#75. 高中生程式解題系統
請問這題的測資是否夠精準? 因為我用float 在line 124 會WA. 而改用double 之後就得到AC 了( 單純改型態其他部分不動). 還是型態的差異呢?
#76. 變數、常數以及資料型態
Float 和Double都是表示浮點數,其中Float 佔4個bytes,而Double佔8個 bytes。 ... 值是3.14159,也從此得知它是Double 型態。變數與常數的差異是變數可.
#77. Arduino 基本語法筆記 - 小狐狸事務所
要注意的是: 一般Arduino 板子的double 跟float 是完全一樣的, 都是32 位元, 而Due 板則跟一般C 語言一樣是64 位元. 其次, 整數的short 與int 也是 ...
#78. JavaScript 四捨五入、數字千分位、無條件捨去
toFixed() // 5 (差異) numObj.toFixed(1) // 5.1 numObj.toFixed(2) // 5.12 numObj. ... toPrecision() // 5.123456 (差異) numObj.toPrecision(1) // 5 numObj.
#79. neilw.tw/
沒有這個頁面的資訊。
#80. 變數與常數
C 語言的資料型態首先分為內建資料型態及複合資料型態,. 內建資料型態再分為數值(int、long、long long、float、double、 long double) 、字元(char) 資料型態及函式 ...
#81. 使用浮點數最最基本的觀念 - DCView 達人部落格
硬體只會對浮點數的溢位產生floating-point exception的訊息,整數的溢位通常是不理會 ... 與h都是至少有15位有效數字的實數變數(見DOUBLE的定義)。
#82. [浮點數] IEEE754 , C/C++ 浮點數誤差@ Edison.X. Blog - 痞客邦
故若非調用顯卡API 時(不知道這動作沒關係,下一句才是重點),筆者建議盡量使用64 bits 之double ,它除了比float 多吃32 bits 之外,不論速度、精準 ...
#83. C2000浮点运算注意事项——CPU和CLA的差异及误差处理技巧
另外CLA不支持64位数。 在这个实例中,我们可以分别观察float类型变量和long double类型变量的汇编代码如下:. C code: CLATMPDATA2=CLATMPDATA2 ...
#84. 資料型態(Data Type) - [C 語言] 程式設計教學
浮點數(Floating-Point Number). C 語言的浮點數細分為三種:. float; double; long double (C99). 三種浮點數在最大值、精準位數等會有一些差異。
#85. MySQL Data Types
「FLOAT」和「DOUBLE」型態的欄位可以用來儲存包含小數的數值,儲存空間分別是4 ... VARCHAR與CHAR兩種字符型數據類型相比,最大的差異就是前者是可變 ...
#86. 浮點數的美麗與哀愁
為了簡化問題, 因此文中談到floating point 若無指名, 一律是指32bit ... or double(64b), 這就表示這與IEEE 754 FPU 的輸出結果會有微小的差異, ...
#87. float跟double小知識 - 亂貼小站
C++語言的浮點數表示法有單倍精確度float與雙倍精確度double兩種, 此兩種是由IEEE 754來規範的。 其中雙倍精確度會比單倍精確度來的精準, ...
#88. TechNews 科技新報| 市場和業內人士關心的趨勢、內幕與新聞
... Bitty Browser Blinklist Blogger Post BlogMarks Bookmarks.fr Box.net BuddyMarks Buffer Care2 News CiteULike Copy Link Delicious Design Float Diary.
#89. CPU 與GPU 計算浮點數的差異 - Neutrino's Blog
CPU 與GPU 在計算浮點數(floating-point number) 時會有差異,本文實際舉例並解釋原因。
#90. [C&C++] 浮點數精準度(Floating-Point Precision) | 逍遙文工作室
很多程式設計師都會有浮點數精準度(Floating-Point Precision)的問題,但常常只知道double的精準度大於float,卻不知道double精準度多少,也不 ...
#91. 浮點數不只是你想像的小數點 - 昕力資訊
或許,不論是在課堂上或是坊間的程式設計教學書籍只要談到浮點數double、float型別,就一定是舉小數點值運算、印出的範例,然後就介紹到此打住沒有再 ...
#92. 浮點數誤差IEEE-754 - 展維隨筆
浮點數誤差IEEE-754 在程式語言中,浮點數基本都是用float 與double來表示,但都會存在誤差float t1 = 0.69 * 10; cout << setprecision(32) << t1 ...
#93. C語言-變數、運算子、字串
double k; ... } 變數使用. int 整數 a=23 ;; long 整數 b=9876543210 ;; float 浮點 ...
#94. 基本資料型態
整數 · long · long int signed long signed long int. 4/32 ; 整數 · unsigned long unsigned long int. 4/32 ; 單精數. float. 4/32 ; 倍精數. double long double. 8/64.
#95. 初學到認證:從Java到Android行動裝置程式設計必修的15堂課
浮點資料就是資料值可以精確到小數點的數值資料,有 float 與 double 兩種,範圍大小的差異。只要是帶有小數點的數值,例如 12.3,是以 double 型別視之,除非後面加上 F 或 ...
#96. C++全方位學習-第三版(適用Dev C++與Visual C++)(電子書)
2.3.3 浮點資料 float, double 浮點數可分為單精度、倍精度、與長倍精度浮點數。單精度、倍精度、與長倍精度的差異在數值的有效位數與數值範圍。
double float差異 在 Re: [計程] 你不可不知道的double 十件事- 看板b97902HW 的美食出口停車場
有一些容易產生誤解的地方來解釋一下 xD
※ 引述《iForests (森林)》之銘言:
: ‧浮點數誤差‧
: 用到 double 時是無論如何都得提到浮點數誤差的,不過這裡只打算亂講。簡單來說
: 是這樣,當你放例如 5 在變數裡時,電腦有可能存 4.9999999999999999999999999999。
: 原則上是沒有差別,但有時候會造成影響。使徒三是個好例子,很多人寫一寫可能會發現
: 印出來的東西竟然有 -0.000,其原因正是因為變數值為像 -0.00000000000002147483647
: 這種後面接了一些怪東西的值(只是隨便打的)。因此輸出時認為它不是 0,而是一個很
: 小很小的負數,所以取 3 位小數時印出 -0.000。
這裡可能會誤導人。雖然原因應該是有一個很小的負數,
但是真的有 -0 這個東西。浮點數格式有 -0 和 +0 :)
我剛才發現 Wiki 還有介紹 xD https://en.wikipedia.org/wiki/%E2%88%920_(number)
: 解法方法很簡單,我們加一個很小很小又不至於太小的數給它,例如 1e-10。
: -0.00000000000002147483647
: +0.0000000001
: ------------------------------
: 0.00000000009997852516353
: 這樣一來,用 %.3lf 印出時,答案就會是 0.000 了。
這地方有一點小問題,請看下面。
: ‧數學函式‧ (使用前需先 #include <math.h>)
: 首先,π = 2.0 * acos(0.0) = 3.1415926535897932384626433832795。
: ↑這是確確實實的 0.0 而不是表情符號
: sin()、cos() 等等函數傳入的參數必須使用弳度而非角度,轉換方法高中數學課應
: 有提過,總之:弳度 = 角度 * π / 180。
這邊似乎有點太理想了 xDDDD
上面這一行丟到編譯器去執行
得出來的結果應該是
3.141592653589793115997963468544185161590576171875... (double)
而不是
3.1415926535897932384626433832795... (真的圓周率)
對了,也可以直接用 acos (-1) 喔!
: 推 LoganChien:#include <float.h> 之後,你可以用 DBL_MAX 代表極大 09/30 22:40
: → LoganChien:的值(double 可以表示的最大值) 09/30 22:40
: 推 LoganChien:檢查二個 double 是否相同,最好用下面的公式,以減少 09/30 22:48
: → LoganChien:意外。﹝誤差造成的﹞ 09/30 22:48
: → LoganChien:fabs(a - b) < DOUBLE_PRECISION_EPSILON 09/30 22:49
: → LoganChien:let DOUBLE_PRECISION_EPSILON = 1e-9. 09/30 22:49
以上是用絕對誤差來實作,通常也都不會有什麼問題,
不過如果更深入了解 double 的格式的話,
就會知道 double 的誤差是相對的而不是絕對的。
意思是說,對於 1000000000 來說 1e-9 的誤差比較容易發生,
但對於 0.000001 來說 1e-9 就比較不容易了。
(可參考 https://en.wikipedia.org/wiki/IEEE_754-2008 或是計概應該會教)
事實上「浮點數」在字面上就講明小數點是「浮動」的
例如,一般我們寫成 5000 和 0.0005 的兩個數,
就實際上在記憶體中浮點數的儲存方法來看,
應該理解成 5 * 10^3 和 5 * 10^-4 比較恰當
所以誤差是相對的而不是絕對的
(附註:電腦裡面用的是二進位,所以更接近 x * 2^y)
那到底要怎麼去處理浮點數的誤差?
這是個很複雜的問題,端看你的目的而定。
以下這篇文章有講如何比較兩個數字是否一樣:
https://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
另外我在這邊提供一個思考的觀點,
到底要允許計算中有多大的誤差可以用最後的要求來定,
例如這次的作業可能要求小數點以下三位,
如果你估計最後的答案是 1000 附近(我只是舉例)
那麼你可能就要讓你整個運算的相對誤差控制在 0.0000005 以內 (0.5e-6)
或是絕對誤差控制在 0.0005 以內 (0.5e-3)
這樣子最後印出來時才會和正確(沒有誤差)的答案比較接近。
運算中的誤差傳遞我相信普物應該有教 xDDD
大致上來說,加法比較不會讓誤差擴大太快 lol
該講的講完了,至於要怎麼寫,套一句劉墉的話,「你自己決定吧!」
: → LoganChien:1. 單純的習慣,我也有看過有人用 1e-8, 1e-10 10/01 00:11
: → LoganChien:2. (印象中) C++ 標準規定 double 最低精確度是 1e-9 10/01 00:12
我相信到這邊 1 應該比較清楚了
至於 2 又要花篇幅講了~
由於大家學的是 C,加上我沒有看過最新 C++0x 的標準
所以在這裡我只講 C99 的狀況
C99 的標準後面的 Annex F 有講說
C 裡面的 float, double, long double
和 IEC 60559:1989 (也就是 ANSI/IEEE 754-1985) 如何對應
簡單來說,要研究 C 的 double 是怎麼運算的,可以查閱上述標準的
倍精浮點數(double-precision floating point number)
先一下歷史和題外話 xD
其實除了 IEEE 754-1985 以外
還有一個 IEEE 854 的標準也在規定浮點數的運算
啊不過最近 IEEE 754-2008 (又稱 IEEE 754r... 名稱超多 - -|||)
把這兩個舊標準都吃掉了
ANSI/IEEE 754-xxxx 和 ISO/IEC 9899:1999 (C99 的標準) 都是要$$$$$的
還好在官網上面可以下載定案前的 "draft" (非正式版,但是跟正式版很接近這樣)
而且也有很多依照這些標準寫的教學網站,好讀好懂又免費!
好,那這些標準到底怎麼規定誤差的呢?
就像之前講的,這些標準有訂出 double 在記憶體上應該怎麼儲存,
格式會接近這樣:
(有一些例外的狀況請自己看文章:https://en.wikipedia.org/wiki/IEEE_floating-point_standard )
S 1.XXXXXXXXX * 2^YYYYYYY
例如 + 1.00010100 * 2^(+001011)
每個亮色的地方都要花記憶體儲存,而 double 短短 64 bits 就由這三部份所瓜分
S 是正負號(一個 bit 就夠了),YYYYY 的長度決定後面的指數部份可以多大多小,
而 XXXXX 的長度決定了精確度,一切的罪孽都是來自 XXXXX 不夠長 -v-
double 的 YYYY 和 XXXX 都比 float 的 YYYY 和 XXXX 還多位,
所以不僅可以處理比較大的數字,數字也可以存比較多位(誤差小)。
double 的 XXXX 只有 52 位~
電腦要把運算結果塞回記憶體中時,很可能就會產生誤差!
預設的誤差處理方法是二進位的「四捨六入五取雙」
大致上是取最接近運算答案的表示方法~
講到這邊,聰明的大家應該就可以知道,
單純因為 double 儲存格式產生的相對誤差大約是 2^-5X (有些小細節我不想講了 orz)
大約是 10^-15 ~ 10^-16 左右
(也就是十進位下大約有 15 位 xD 大家可以看前面的圓周率大約第幾位開始爆炸)
至於 C++ 我猜應該也是用同樣的標準玩的
有興趣歡迎補充 xDDDD
--
我在 P2 也有版喔 xD 同 ID 喵~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.39
※ 編輯: Favonia 來自: 140.112.30.39 (10/02 21:31)
... <看更多>