国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

double相加(減)結果會有些誤差

2019-11-17 03:20:34
字體:
來源:轉載
供稿:網友

double相加(減)結果會有些誤差

前提介紹

今天在調試代碼的時候發現了一個double類型數據相減的有趣問題,148163.1 - 82692.09大家猜猜結果等于多少,經過調試最終為5471.010000000009。

是不是很奇怪,下面將說明這其中的奧妙!

原因說明

double屬于floating binary point types,也就是說都double型的數值在相加減的時候,會將數值轉換成二進制的數值如10001.10010110011這種表示發再做相加減,但是在轉換成二進制代碼表示的時候,存儲小數部分的位數會有不夠的現象,即無限循環小數,這就是造成微差距的主要原因。

解決方法

1.只取需要用到的位數:

小數點臺后面的位數部分就不要管了,不過這種方法不太好。

2.使用Decimal類型:

用Decimal就不會出現上面的問題了,可以準確的計算小數值,知識Decimal的范圍比double小,一般情況下也夠用了

Decimal類型的有效位數達到28位,而double類型的16位,所以Decimal類型比Double類型能表示更精確的浮點數。相關知識可以參考下面的鏈接。

c#中decimal ,double,float

總結

1.在double類型數值進行比較大小的情況最好使用1.02-1.01==double.MinValue這種方式進行判斷

2.使用double類型進行加減的情況下看看能否使用Decimal類型進行計算


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶绥县| 苏尼特左旗| 温州市| 武隆县| 灵川县| 七台河市| 邮箱| 嘉义市| 青龙| 上高县| 乌兰浩特市| 南投市| 贵溪市| 吴江市| 安泽县| 天津市| 昭平县| 水富县| 宜阳县| 辽宁省| 马龙县| 太仓市| 韶关市| 昂仁县| 六安市| 渝中区| 哈尔滨市| 丰顺县| 越西县| 凯里市| 通海县| 许昌市| 湘潭县| 剑川县| 栾城县| 大安市| 怀安县| 高淳县| 南漳县| 榆社县| 灵寿县|