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

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

python?解決數(shù)據(jù)庫寫入時float自動變?yōu)檎麛?shù)的問題_python

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

數(shù)據(jù)庫寫入時float自動變?yōu)檎麛?shù)問題

問題描述

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

發(fā)現(xiàn)實現(xiàn)因為我創(chuàng)建表的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)這里了,小數(shù)部分自動是0位,整數(shù)部分為4位。自然小數(shù)就沒有了。所以可以把float(4,0)改成float。

float所表示的范圍

**關于float 表示的數(shù)的范圍的計算問題?**

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

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

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

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

現(xiàn)在可以計算其表示范圍了:

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

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

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

欄目分類
最近更新