日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python?解決數據庫寫入時float自動變為整數的問題_python

作者:黎先生你好 ? 更新時間: 2022-09-03 編程語言

數據庫寫入時float自動變為整數問題

問題描述

今天用python插入數據到mysql時遇到個問題,明明數據庫設置的字段數據類型是float,要存的數據也是float類型,但是存進去后就變成了整數了,比如0.98變成了1.

發現實現因為我創建表的sql語句有問題,因為使用Navicat直接導出的sql語句

表的sql語句如下

CREATE TABLE `traffic_and_weather` (
? `currentTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
? `expedite` float(4,0) NOT NULL,
? `congested` float(4,0) NOT NULL DEFAULT '0',
? `blocked` float(4,0) NOT NULL DEFAULT '0',
? `unknown` float(4,0) DEFAULT '0',
? `weather` int NOT NULL DEFAULT '0',
? PRIMARY KEY (`currentTime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

問題解決方案

問題就出在float(4,0)這里了,小數部分自動是0位,整數部分為4位。自然小數就沒有了。所以可以把float(4,0)改成float。

float所表示的范圍

**關于float 表示的數的范圍的計算問題?**

float 在計算機中表示是32位 sign(1bit)+exponent(8)+fraction(23)

階碼用移碼來表示,8位移碼(偏移量為127) 本來應該可以表示-128~127,但是全0和全1被用來?? ??? ?表示特殊狀態的指數

所以為-126~127. 這里為什么要使用127來作為偏移量,若使用128 則8位移碼表示范圍-127~126.由于表示一個大的正數

比一個小的負數更加重要所以127作為偏移量比較合適。

現在可以計算其表示范圍了:

尾數部分的取值范圍[1,2),所以最小負數-2*2^127 最大負數-1*2^(-126)

最小正數 1*2^(-126) 最大正數2*2^(127)

原文鏈接:https://blog.csdn.net/DlMmU/article/details/89981625

欄目分類
最近更新