pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<legend id='4sDZQ'><style id='4sDZQ'><dir id='4sDZQ'><q id='4sDZQ'></q></dir></style></legend>

  • <small id='4sDZQ'></small><noframes id='4sDZQ'>

    <i id='4sDZQ'><tr id='4sDZQ'><dt id='4sDZQ'><q id='4sDZQ'><span id='4sDZQ'><b id='4sDZQ'><form id='4sDZQ'><ins id='4sDZQ'></ins><ul id='4sDZQ'></ul><sub id='4sDZQ'></sub></form><legend id='4sDZQ'></legend><bdo id='4sDZQ'><pre id='4sDZQ'><center id='4sDZQ'></center></pre></bdo></b><th id='4sDZQ'></th></span></q></dt></tr></i><div class="2o400ye" id='4sDZQ'><tfoot id='4sDZQ'></tfoot><dl id='4sDZQ'><fieldset id='4sDZQ'></fieldset></dl></div>

    <tfoot id='4sDZQ'></tfoot>
      <bdo id='4sDZQ'></bdo><ul id='4sDZQ'></ul>

      1. PHP PDO 查詢?yōu)?FLOAT 字段返回不準(zhǔn)確的值

        PHP PDO query returns inaccurate value for FLOAT fields(PHP PDO 查詢?yōu)?FLOAT 字段返回不準(zhǔn)確的值)

            <small id='3outW'></small><noframes id='3outW'>

            • <tfoot id='3outW'></tfoot>
                <legend id='3outW'><style id='3outW'><dir id='3outW'><q id='3outW'></q></dir></style></legend>
                • <bdo id='3outW'></bdo><ul id='3outW'></ul>
                    <tbody id='3outW'></tbody>

                  <i id='3outW'><tr id='3outW'><dt id='3outW'><q id='3outW'><span id='3outW'><b id='3outW'><form id='3outW'><ins id='3outW'></ins><ul id='3outW'></ul><sub id='3outW'></sub></form><legend id='3outW'></legend><bdo id='3outW'><pre id='3outW'><center id='3outW'></center></pre></bdo></b><th id='3outW'></th></span></q></dt></tr></i><div class="qg2gimc" id='3outW'><tfoot id='3outW'></tfoot><dl id='3outW'><fieldset id='3outW'></fieldset></dl></div>
                  本文介紹了PHP PDO 查詢?yōu)?FLOAT 字段返回不準(zhǔn)確的值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我猜這之前已經(jīng)出現(xiàn)過,但我找不到我的問題的答案.這是一個小代碼片段:

                   $stmt = $this ->分貝->詢問("選擇`字段`從`表`在哪里(`ID` = 33608)");var_dump($stmt -> fetch());

                  這是我得到的結(jié)果:

                   array(1) { ["Field"]=>浮動(1.7999999523163)}

                  然而,MySQL數(shù)據(jù)庫中的數(shù)據(jù)是1.8.該字段的類型是 float(7,4).$this->db 是一個 PDO 對象.我最近遷移到 PDO(從 AdoDB),并且此代碼之前運(yùn)行良好.我不確定這里出了什么問題.你能指出我正確的方向嗎?謝謝!

                  解決方案

                  如浮點(diǎn)類型(近似值) - FLOATDOUBLE:

                  <塊引用>

                  MySQL 在存儲值時執(zhí)行四舍五入,因此如果將 999.00009 插入到 FLOAT(7,4) 列中,近似結(jié)果為 999.0001>.

                  因?yàn)楦↑c(diǎn)值是近似值,而不是作為精確值存儲,嘗試在比較中將它們視為精確值可能會導(dǎo)致問題.它們還受制于平臺或?qū)崿F(xiàn)依賴性.有關(guān)詳細(xì)信息,請參閱第 C.5.5.8 節(jié),浮動問題 -點(diǎn)值"

                  為了獲得最大的可移植性,需要存儲近似數(shù)字?jǐn)?shù)據(jù)值的代碼應(yīng)使用 FLOATDOUBLE PRECISION,不指定精度或位數(shù).

                  因此,在將 1.8 插入您的數(shù)據(jù)庫后,MySQL 將文字四舍五入為 001.8000 并在 近似值 rel="nofollow">binary32 格式:即 0x3FE66666,其位表示:<前>簽名:0b0有偏指數(shù):0b01111111= 127(表示包括 +127 的偏差,因此 exp = 0)有效數(shù) : 0b[1.]11001100110011001100110^ 隱藏位,不以二進(jìn)制表示形式存儲= [1.]7999999523162841796875

                  這相當(dāng)于:

                  <前>(-1)^0 * 1.7999999523162841796875 * 2^0= 1.7999999523162841796875

                  這是 MySQL 返回給客戶端的值.看起來 AdoDB 然后檢查了列的數(shù)據(jù)類型并相應(yīng)地對結(jié)果進(jìn)行了四舍五入,而 PDO 則沒有.

                  如果你想要精確的值,你應(yīng)該使用固定點(diǎn)數(shù)據(jù)類型,例如 DECIMAL.

                  I am guessing this has came up before, but I couldn't find the answer to my question. Here is a little code snippet:

                      $stmt = $this -> db -> query("
                          SELECT
                            `Field`
                          FROM
                            `Table`
                          WHERE
                            (`ID` = 33608)");
                      var_dump($stmt -> fetch());
                  

                  And this is the result I get:

                      array(1) { ["Field"]=> float(1.7999999523163) }
                  

                  However, the data in the MySQL database is 1.8. The type of the field is float(7,4). $this->db is a PDO object. I have recently migrated to PDO (from AdoDB), and this code was working fine before. I am not sure what went wrong here. Could you point me in the right direction? Thanks!

                  解決方案

                  As documented under Floating-Point Types (Approximate Value) - FLOAT, DOUBLE:

                  MySQL performs rounding when storing values, so if you insert 999.00009 into a FLOAT(7,4) column, the approximate result is 999.0001.

                  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, see Section C.5.5.8, "Problems with Floating-Point Values"

                  For maximum portability, code requiring storage of approximate numeric data values should use FLOAT or DOUBLE PRECISION with no specification of precision or number of digits.

                  Therefore, upon inserting 1.8 into your database, MySQL rounded the literal to 001.8000 and encoded the closest approximation to that number in binary32 format: i.e. 0x3FE66666, whose bits signify:

                  Sign           : 0b0
                  
                  Biased exponent: 0b01111111
                                 =   127 (representation includes bias of +127, therefore exp = 0)
                  
                  Significand    : 0b[1.]11001100110011001100110
                                      ^ hidden bit, not stored in binary representation
                                 =   [1.]7999999523162841796875
                  

                  This equates to:

                   (-1)^0 * 1.7999999523162841796875 * 2^0
                  =         1.7999999523162841796875
                  

                  This is the value that is returned by MySQL to the client. It would appear that AdoDB then inspected the column's datatype and rounded the result accordingly, whereas PDO does not.

                  If you want exact values, you should use a fixed point datatype, such as DECIMAL.

                  這篇關(guān)于PHP PDO 查詢?yōu)?FLOAT 字段返回不準(zhǔn)確的值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標(biāo)不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術(shù)方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅(qū)動程序)

                        <bdo id='ALUhJ'></bdo><ul id='ALUhJ'></ul>
                      • <i id='ALUhJ'><tr id='ALUhJ'><dt id='ALUhJ'><q id='ALUhJ'><span id='ALUhJ'><b id='ALUhJ'><form id='ALUhJ'><ins id='ALUhJ'></ins><ul id='ALUhJ'></ul><sub id='ALUhJ'></sub></form><legend id='ALUhJ'></legend><bdo id='ALUhJ'><pre id='ALUhJ'><center id='ALUhJ'></center></pre></bdo></b><th id='ALUhJ'></th></span></q></dt></tr></i><div class="sc0eacc" id='ALUhJ'><tfoot id='ALUhJ'></tfoot><dl id='ALUhJ'><fieldset id='ALUhJ'></fieldset></dl></div>
                      • <small id='ALUhJ'></small><noframes id='ALUhJ'>

                        <tfoot id='ALUhJ'></tfoot>

                        • <legend id='ALUhJ'><style id='ALUhJ'><dir id='ALUhJ'><q id='ALUhJ'></q></dir></style></legend>

                            <tbody id='ALUhJ'></tbody>

                            主站蜘蛛池模板: 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 最新范文网_实用的精品范文美文网 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 加盟店-品牌招商加盟-创业项目商机平台 | 定制异形重型钢格栅板/钢格板_定做踏步板/排水沟盖板_钢格栅板批发厂家-河北圣墨金属制品有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 国际金融网_每日财经新资讯网 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 |