Python從入門到放棄——浮點型變量

浮點型變量

前言

上一篇文章我們研究了整數類型變量,本次我們來開始研究一下浮點類型變量。

浮點類型

浮點數在計算機編程中扮演著重要的角色。它們是一種特殊的數據類型,用于存儲和處理小數或實數。在Python中,浮點數是由小數點分隔的數字組成的。在本文中,我將探討浮點類型變量的定義、使用以及它們的一些特點。

首先,讓我們來看看浮點數變量的定義。在Python中,可以使用以下語法來定義一個浮點變量:

variable_name = 3.14
print(variable_name)

最后得到的結果如下圖所示:

在上面的例子中,variable_name是變量的名稱,而3.14是變量的值。注意,浮點數可以是正數或負數,并且可以包含小數點。

接下來,讓我們探討一些使用浮點類型變量的例子。假設我們要計算一個圓的面積。我們知道圓的面積公式是πr^2,其中π是一個數學常數,約等于3.14,而r是圓的半徑。我們可以使用浮點類型變量來存儲半徑和計算面積的結果。下面是一個計算圓面積的示例代碼:

pi = 3.14
radius = 5.0area = pi * (radius ** 2)
print(area)

運行結果如下所示:

在上面的例子中,我們定義了一個名為pi的浮點變量,該變量存儲了常數π的近似值3.14。然后,我們定義了一個名為radius的浮點變量,該變量存儲了圓的半徑。接下來,我們使用浮點數的乘法和冪運算,計算圓的面積,并將其存儲在名為area的浮點變量中。最后,我們使用print函數將計算結果打印出來。

除了基本的數學計算,浮點類型變量在實際編程中還有許多其他的應用。例如,它們可以用于存儲和處理貨幣值、測量數據、科學計算等。浮點數的范圍通常比整數的范圍大,因此它們可以表示更大或更小的值。然而,浮點數的精度是有限的,這意味著它們可能無法準確地表示某些十進制數。這是因為計算機內部使用二進制表示浮點數,并且存在舍入誤差。因此,在進行關鍵的精確計算時,我們需要小心處理浮點數。

此外,浮點數還可以表示為特殊值NaN(Not a Number),表示一個無效的或未定義的數值。NaN通常出現在一些非法的數學運算中,比如0除以0。NaN的特點是無法進行比較,任何與NaN進行的比較操作都將返回False。

在Python中,處理浮點數的功能非常強大。Python提供了許多內置函數和模塊,用于處理浮點數。這些功能包括數學運算、舍入和格式化等。例如,Python提供了math模塊,其中包含了許多數學函數,如sin、cos、sqrt等。另外,Python還提供了round函數來進行舍入操作,可以將浮點數四舍五入到指定的小數位數。此外,Python還提供了format函數來格式化浮點數輸出,可以指定輸出的精度、寬度和對齊方式等。

總之,浮點數是一種用于表示小數的數據類型,在計算機中以近似的方式存儲和處理實數。除了常規的浮點數,還有特殊值如正無窮大、負無窮大和NaN。Python提供了豐富的功能和工具來處理浮點數,包括數學運算、舍入和格式化等。

下面我們來看一下詳細的代碼

import math# 浮點數運算
a = 1.2
b = 2.3
c = a + b
print(c)  # 輸出:3.5# 舍入操作
d = 3.14159
e = round(d, 2)
print(e)  # 輸出:3.14# 格式化輸出
f = 4.56789
formatted_f = "{:.2f}".format(f)
print(formatted_f)  # 輸出:4.57# 使用math模塊進行數學運算
g = math.sin(math.pi)
print(g)  # 輸出:1.2246467991473532e-16# 特殊浮點數值
h = float('inf')
i = float('-inf')
j = float('nan')
print(h, i, j)  # 輸出:inf -inf nan

這段代碼主要介紹了Python中浮點數的運算和操作。

  • 首先,代碼導入了math模塊,該模塊提供了一系列數學運算的函數和常量。
  • 然后,定義了兩個浮點數a和b,進行加法運算,并將結果賦值給變量c。使用print函數打印出c的值,結果為3.5。
  • 接下來,定義了一個浮點數d,并使用round函數將其四舍五入保留兩位小數,將結果賦值給變量e。使用print函數打印出e的值,結果為3.14。
  • 然后,定義了一個浮點數f,并使用format函數將其格式化為保留兩位小數的字符串形式,將結果賦值給變量formatted_f。使用print函數打印出formatted_f的值,結果為4.57。
  • 接下來,使用math模塊的sin函數計算了π的正弦值,并將結果賦值給變量g。使用print函數打印出g的值,結果為1.2246467991473532e-16,這是一個科學計數法的表示方式。
  • 最后,定義了三個特殊的浮點數值:正無窮大、負無窮大和非數值。使用print函數打印出h、i、j的值,分別為inf、-inf、nan。

深入了解浮點數底層

在Python中,float 類型用于表示浮點數,即帶有小數部分的數字。雖然Python為程序員提供了高級別的抽象,使得我們不需要關心底層實現的細節,但了解float類型在Python內部如何表示和存儲仍然是有益的。

IEEE 754 浮點數標準

Python中的float類型通常遵循IEEE 754標準來表示浮點數。IEEE 754是一個定義浮點數在計算機中如何表示、存儲和運算的國際標準。它定義了多種精度的浮點數,包括單精度(32位)和雙精度(64位)。Python的float類型通常是雙精度(double precision)。

浮點數的構成

一個IEEE 754浮點數由三個部分組成:

  • 符號位(Sign):1位,用于表示正負號(0表示正數,1表示負數)。
  • 指數位(Exponent):對于雙精度浮點數,指數位占用11位。它表示了數值的指數部分,并且有一個偏移量(對于雙精度是1023)。
  • 尾數位(Mantissa 或 Fraction):對于雙精度浮點數,尾數位占用52位。它表示了數值的小數部分(或稱為分數部分)。

浮點數的范圍與精度

由于指數位和尾數位的位數是固定的,因此浮點數的范圍和精度也是有限的。

  • 范圍:由于指數位的限制,浮點數有一個最小值(接近但大于0)和一個最大值(有限的)。
  • 精度:由于尾數位的限制,浮點數不能表示所有實數,只能表示一定精度范圍內的數。這意味著對于某些操作(如除法),結果可能不是精確的。

Python中的float類型

在Python中,當你創建一個浮點數時(例如x = 3.14),Python會將其存儲為一個遵循IEEE 754標準的雙精度浮點數。你可以使用sys.float_info來獲取有關Python中float類型的信息,包括其精度、范圍等。

浮點數的限制

由于浮點數的表示方式和精度限制,它們在某些情況下可能會導致問題:

  • 舍入誤差:由于浮點數的精度有限,某些計算可能會導致舍入誤差。
  • 表示范圍:非常大的數或非常小的數可能無法用浮點數精確表示。
  • 特殊值:浮點數還包括一些特殊值,如正無窮大(float(‘inf’))、負無窮大(-float(‘inf’))和非數字(float(‘nan’))。

浮點數與十進制數的差異

需要注意的是,雖然我們在日常生活中經常使用十進制數,但計算機內部使用二進制數來表示和處理數據。由于二進制數無法精確表示所有十進制小數(如1/3或1/10),因此浮點數的表示和計算可能會受到這種差異的影響。這也是為什么在進行金融計算或需要高精度計算時,通常會使用專門的庫(如decimal庫)來避免浮點數的舍入誤差。

總結

總結起來,浮點類型變量在Python中起到了至關重要的作用。它們用于存儲和處理小數和實數,可以進行各種數學運算,并具有一些特殊的特點。在實際編程中,我們需要注意浮點數的精度和舍入誤差,并使用適當的函數和方法來處理浮點數。通過熟練掌握浮點類型變量的使用,我們可以更好地進行數值計算和科學編程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40284.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40284.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40284.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在PhpStorm中運行SQL文件?

如何在PhpStorm中運行SQL文件? 提問:如何在PhpStorm中運行SQL文件? 解答:本文將詳細介紹如何在PhpStorm中運行SQL文件的步驟,包括如何配置數據庫連接和執行SQL腳本,并附帶示例SQL代碼。 1. 配置數據庫連…

迎接創新浪潮!RFID國軍標助力數字化裝備場轉型

隨著大數據、物聯網的飛速發展,數字化轉型已成為軍事發展的核心戰略之一。在這一重大歷史進程中,廣州一芯未來的RFID國軍標呈現出獨特而重要的作用。它不僅提升了裝備管理的效率和準確性,還增強了裝備的安全保障和資源配置的合理性。它以高效…

標題:哈爾濱等保測評:技術、管理和人員的協同作戰

在大數據時代,信息安全成為各行業不可忽視的關鍵議題。哈爾濱作為東北地區重要的經濟和科技中心,其等保測評工作更是成為了網絡安全領域的焦點。等保測評,即信息安全等級保護測評,不僅檢驗著技術的先進性,也考驗著管理…

Linux 下實現 MySQL 數據庫每天自動備份定時備份

創建一個備份腳本文件,例如 backup_mysql.sh,并將以下內容添加到該文件中: #!/bin/bash# 設置數據庫連接信息 DB_USER"your_database_user" DB_PASSWORD"your_database_password" DB_NAME"your_database_name"…

SpringMVC基礎詳解

文章目錄 一、SpringMVC簡介1、什么是MVC2、MVC架構模式與三層模型的區別3、什么是SpringMVC 二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、執行Controller 三、RequestMapping注解1、value屬性1.1、基礎使用1.2、Ant風格(模糊匹配…

在CenteOs7上安裝mysql8.0(Super詳細版)

在CenteOs7上安裝mysql8.0 為什么用Mysql8.0?如何下載下載地址需要提前準備下載步驟 服務器上安裝如何上傳到服務器?通過wget下載到服務器并解壓 開始安裝非必須安裝如果全部安裝執行順序 安裝完后,啟動mysql使用“systemctl”檢測mysqld服務…

python中unittest框架和pytest框架區別

unittest框架和pytest框架對比 類型unittest框架pytest框架安裝標準庫,無需額外安裝第三方單元測試庫,需要安裝用例編寫測試類必須要繼承 unittest.TestCase測試類命名以"Test"開頭,無需繼承,用例可以是函數&#xff0…

充分利用智慧校園人事系統,提升黨政職務管理

智慧校園人事系統中的黨政職務管理功能,是專為高校及教育機構設計的,旨在高效、精確地處理與黨政職務相關的各類事務,包括職務任命、任期管理、職責分配、考核評估等,以信息化手段促進黨務及行政工作的透明化、規范化。 該模塊首先…

根據服務器流量使用情況推算出網站流量的方法

根據服務器流量使用情況推算網站流量是一個涉及數據監測、分析和計算的過程。以下是一些基本步驟和方法: 1. 收集數據 首先,你需要獲取服務器的流量數據,這些數據通常包括: - 總流量:一定時間周期內服務器發送和接收的…

Jest是什么軟件?

Jest是一個由Facebook開發的開源JavaScript測試框架,它專為JavaScript項目的測試而設計,特別適用于React和Node.js環境。Jest以其簡單的配置、高效的性能和易用性而聞名,成為現代JavaScript項目中不可或缺的測試工具。以下是關于Jest的詳細解…

《Windows API每日一練》8.1 button控件二

8.1.4 按鈕 在BTNLOOK中顯示的前兩個按鈕是“按鍵”按鈕(push button)。此類按鈕是一種帶有 文本的矩形,這些文本是在CreateWindow調用的窗口文本參數中提供的。而CreateWindow 或MoveWindow調用中指定的寬度和高度則確定了矩形的大小。文本…

Spring-09

在 Spring 中如何注入一個 java 集合 在Spring中注入一個Java集合可以使用Autowired注解來實現。你可以在一個類的字段、構造函數或者setter方法上使用Autowired注解來注入一個集合。 下面是一個示例代碼,展示了如何在Spring中注入一個Java集合。 創建一個接口和實…

kotlin 中 string array 怎么表示

在 Kotlin 中&#xff0c;字符串數組可以使用 Array<String> 類型表示。你可以通過多種方式來創建和初始化字符串數組。以下是幾種常見的方法&#xff1a; 使用 arrayOf 函數&#xff1a; val stringArray arrayOf("Hello", "World", "Kotli…

面對全球新能源汽車合作發展創維汽車如何實現共贏

由全球新能源汽車合作組織(籌)主辦、中國電動汽車百人會承辦的首屆全球新能源汽車合作發展論壇(GNEV2024)于6月27日&#xff0c;6月28日在新加坡金沙會議展覽中心召開。創維汽車國際營銷公司總經理齊奎源受邀參會并作出分享。 本屆大會以推動全球新能源汽車產業協同發展與合作…

C語言課設--讀取文件并統計數據

讀取文件并統計數據 // 統計記事本英文字符數 //功能 &#xff1a; 讀 文件 a.txt 統計出各種 數字 大寫字母 小寫字母 0~9 A~Z a ~z各有多少個 程序主體框架如下&#xff1a; #include<stdio.h> int a[128]{0};//其中數組元素a[i]保存 ASCII 碼為i的字符的數量 v…

C++指針內存分配與釋放

文章目錄 指針分配與釋放 &#xff1a;C new/delete VS C malloc/freeC new/deleteC malloc/free 指針銷毀智能指針 指針分配與釋放 &#xff1a;C new/delete VS C malloc/free new&#xff1a;分配內存、調用類的構造函數。delete&#xff1a;調用類的析構函數和釋放內存&am…

【CSS in Depth 2 精譯】2.4 視口的相對單位

當前內容所在位置 第一章 層疊、優先級與繼承第二章 相對單位 2.1 相對單位的威力2.2 em 與 rem2.3 告別像素思維2.4 視口的相對單位 ??2.5 無單位的數值與行高2.6 自定義屬性2.7 本章小結 2.4 視口的相對單位 前面介紹過的 em 和 rem 是相對于 font-size 定義的&#xff0…

rust + mingw安裝教程

0. 說明 windows上安裝rust時&#xff0c;需要在電腦上安裝C/C構建工具。推薦的的兩種工具鏈可以選擇&#xff1a; visual studio build toolsmingw 官方推薦使用visual studio&#xff0c;若你的電腦上已經安裝了visual studio&#xff0c;則無需再安裝&#xff0c;直接安裝…

nodejs md文件轉html

const marked require(marked);// 要轉換的 Markdown 文本 const markdownText # Hello, Markdown!This is a paragraph.- List item 1 - List item 2 ;// 使用 marked 將 Markdown 轉換為 HTML const html marked(markdownText);console.log(html);我直接讀取md文件轉換結…

單目相機減速帶檢測以及測距

單目相機減速帶檢測以及測距項目是一個計算機視覺領域的應用&#xff0c;旨在使用一個攝像頭&#xff08;單目相機&#xff09;來識別道路上的減速帶&#xff0c;并進一步估計車輛與減速帶之間的距離。這樣的系統對于智能駕駛輔助系統&#xff08;ADAS&#xff09;特別有用&…