麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 文庫 > 正文

Double類型精度問題造成的錯誤

2024-09-07 22:12:34
字體:
來源:轉載
供稿:網友
       研發同事讓把某個double類型字段的值四舍五入保留2位小數,mysql中round(col,2)可以實現四舍五入并且保留2位小數,但是神奇的事情發生了:發現有的四舍五入是正確的,而有的不是我們想要的結果,如下:簡單模擬此場景:
 
      yujx>drop table dd;
      yujx>create table dd (a double);
      yujx>insert into dd values(956.745),(231.34243252),(321.43534),(5464.446);
      yujx>select a,round(a,2) from dd;
+--------------+------------+
| a            | round(a,2) |
+--------------+------------+
|      956.745 |     956.74 |    #可以看到并不是我們期望的956.75
| 231.34243252 |     231.34 |
|    321.43534 |     321.44 |
|     5464.446 |    5464.45 |
+--------------+------------+
4 rows in set (0.00 sec)
 
The FLOAT and DOUBLE types represent approximate numeric data values. MySQL uses four bytes for single-precision values and eight bytes for double-precision values.
 
Because floating-point values are approximate and not stored as exact values, attempts to treat them as exact in comparisons may lead to problems. They are also subject to platform or implementation dependencies. For more information, seeSection B.5.5.8, “Problems with Floating-Point Values
 
“Problems with Floating-Point Values”
B.5.4.8 Problems with Floating-Point Values
 
Floating-point numbers sometimes cause confusion because they are approximate and not stored as exact values. A floating-point value as written in an SQL statement may not be the same as the value represented internally. Attempts to treat floating-point values as exact in comparisons may lead to problems. They are also subject to platform or implementation dependencies. The FLOAT and DOUBLE data types are subject to these issues. For DECIMALcolumns, MySQL performs operations with a precision of 65 decimal digits, which should solve most common inaccuracy problems.
 
由于浮點數存儲的是近似值而不是確切的值,某些時候可能導致混亂。一個浮點數值在SQL語句作為內部表示的值可能不同。試圖使用float、double來存儲確切的值可能會出現問題,他們也依賴不同平臺和實現方式。而對應DECIMAL類型,MySQL作為65位精度進行操作,可以解決此類精度問題。
  
綜上,如果想精確的存儲浮點數值,應該使用DECIMAL.比如金額等。
 
DECIMAL, NUMERIC
11.2.2 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC
 
The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it
 
is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is
 
implemented as DECIMAL。
 
DECIMAL和NUMBERIC存儲的是確切的數值,使用它們可以保證精確度,例如用于存儲金額數據。在MySQL中,NUMBERIC和DECIMAL以同樣的類型實現。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人精品区 | 高清国产午夜精品久久久久久 | www.热| 亚洲一区在线免费视频 | 国产日韩大片 | 91网页视频入口在线观看 | 最新亚洲国产 | 精品成人av一区二区在线播放 | 日本欧美一区二区三区视频麻豆 | 日本中文字幕电影在线观看 | 免费视频一区 | 国产精品视频成人 | 日本精品二区 | 久久久久北条麻妃免费看 | 国产一区二区高清在线 | 亚洲特黄a级毛片在线播放 久久久入口 | 在线亚州 | 日本精品视频一区二区三区四区 | 国产精品久久久久久久四虎电影 | 91成人精品 | 亚洲九草 | 91精品最新国内在线播放 | 一日本道久久久精品国产 | 久久久www成人免费精品 | 毛片网站网址 | 成人羞羞在线观看网站 | 成人国产高清 | 91精品国产一区二区三区动漫 | 国产黄色网 | 久久不射电影 | 国产精品99久久久久久久vr | 午夜视频色 | 久久精品国产99国产精品亚洲 | 老子午夜影院 | av色在线观看 | 97精品国产高清在线看入口 | 少妇淫片免费一级毛片 | 亚洲va久久久噜噜噜久久男同 | 日本欧美一区二区三区在线观看 | 国产精品18久久久久久久久 | 北原夏美av|