自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 和 Java Number 類型對比!

開發(fā)
Python 支持多種類型的數(shù)字,包括整數(shù)(int)、浮點(diǎn)數(shù)(Float)和復(fù)數(shù)(Complex)。這篇文章,我們將分析 Python的每種 Number類型以及和 Java語言的對比。

在 Python 中,“Number”是一個(gè)類別,包含不同類型的數(shù)值數(shù)據(jù)。Python 支持多種類型的數(shù)字,包括整數(shù)(int)、浮點(diǎn)數(shù)(Float)和復(fù)數(shù)(Complex)。這篇文章,我們將分析 Python的每種 Number類型以及和 Java語言的對比。

一、Python int

Python 的 int(整數(shù))是一個(gè)包含負(fù)數(shù)的整數(shù),不包括小數(shù)。在 Python 中,整數(shù)值的長度沒有限制。

下面通過幾個(gè)示例展示 Python 的 int 使用:

示例 1:創(chuàng)建整數(shù)并檢查類型

num = -8

# 打印數(shù)據(jù)類型
print(type(num))

輸出:

<class 'int'>

示例 2:對整數(shù)類型執(zhí)行算術(shù)操作

a = 5
b = 6

# 加法
c = a + b
print("加法:", c)

d = 9
e = 6

# 減法
f = d - e
print("減法:", f)

g = 8
h = 2

# 除法
i = g // h
print("除法:", i)

j = 3
k = 5

# 乘法
l = j * k
print("乘法:", l)

m = 25
n = 5

# 取模
o = m % n
print("取模:", o)

p = 6
q = 2

# 指數(shù)
r = p ** q
print("指數(shù):", r)

輸出:

加法: 11
減法: 3
除法: 4
乘法: 15
取模: 0
指數(shù): 36

二、Python Float

Float(浮點(diǎn)數(shù))是具有浮點(diǎn)表示的實(shí)數(shù)。它通過小數(shù)點(diǎn)指定??蛇x地,字符 e 或 E 后跟正或負(fù)整數(shù)可以附加以指定科學(xué)計(jì)數(shù)法。一些表示為浮點(diǎn)數(shù)的數(shù)字示例是 0.5 和 -7.823457。

它們可以直接通過輸入帶小數(shù)點(diǎn)的數(shù)字創(chuàng)建,或者通過對整數(shù)進(jìn)行操作(如除法)創(chuàng)建。數(shù)字末尾的多余零會(huì)自動(dòng)忽略。

下面通過幾個(gè)示例展示 Python 的 Float 使用:

示例 1:創(chuàng)建浮點(diǎn)數(shù)并檢查類型

num = 3/4

# 打印數(shù)據(jù)類型
print(type(num))

輸出:

<class 'float'>

如我們所見,除以任何兩個(gè)整數(shù)會(huì)產(chǎn)生一個(gè)浮點(diǎn)數(shù)。通過對兩個(gè)浮點(diǎn)數(shù)、或一個(gè)浮點(diǎn)數(shù)和一個(gè)整數(shù)進(jìn)行操作,也會(huì)產(chǎn)生浮點(diǎn)數(shù)。

num = 6 * 7.0

print(type(num))

輸出:

<class 'float'>

示例 2:對浮點(diǎn)數(shù)類型執(zhí)行算術(shù)操作

a = 5.5
b = 3.2

# 加法
c = a + b
print("加法:", c)

# 減法
c = a - b
print("減法:", c)

# 除法
c = a / b
print("除法:", c)

# 乘法
c = a * b
print("乘法:", c)

輸出:

加法: 8.7
減法: 2.3
除法: 1.71875
乘法: 17.6

注意:浮點(diǎn)數(shù)的精度只有到小數(shù)點(diǎn)后 15 位,第 16 位可能不準(zhǔn)確。

三、Python Complex

Complex(復(fù)數(shù))是由實(shí)部和虛部組成的數(shù)。例如,3 + 4j 是一個(gè)復(fù)數(shù),其中 3 是實(shí)部,4 乘以 j 是虛部。

下面通過幾個(gè)示例展示 Python 的 Complex 使用:

示例 1:創(chuàng)建復(fù)數(shù)并檢查類型

num = 6 + 9j

print(type(num))

輸出:

<class 'complex'>

示例 2:對復(fù)數(shù)類型執(zhí)行算術(shù)操作

a = 1 + 5j
b = 2 + 3j

# 加法
c = a + b
print("加法:", c)

d = 1 + 5j
e = 2 - 3j

# 減法
f = d - e
print("減法:", f)

g = 1 + 5j
h = 2 + 3j

# 除法
i = g / h
print("除法:", i)

j = 1 + 5j
k = 2 + 3j

# 乘法
l = j * k
print("乘法:", l)

輸出:

加法: (3+8j)
減法: (-1+8j)
除法: (1.307692307692308+0.5384615384615384j)
乘法: (-13+13j)

四、Python 類型轉(zhuǎn)換

接下來,我們分析 int,F(xiàn)loat,Complex 這幾種 Number類型之間是如何轉(zhuǎn)換的。

使用算術(shù)運(yùn)算

我們可以使用加法、減法等運(yùn)算隱式(自動(dòng))地改變數(shù)字的類型,如果其中一個(gè)操作數(shù)是浮點(diǎn)數(shù)。這種方法不適用于復(fù)數(shù)。

示例:使用算術(shù)運(yùn)算進(jìn)行類型轉(zhuǎn)換

a = 1.6
b = 5

# c被轉(zhuǎn)換成 float類型
c = a + b

print(c)
print(type(c))

輸出:

6.6
<class 'float'>

使用內(nèi)置函數(shù)

我們還可以使用內(nèi)置函數(shù)如 int()、float() 和 complex() 顯式地將一種類型轉(zhuǎn)換為另一種類型。

示例:使用內(nèi)置函數(shù)進(jìn)行類型轉(zhuǎn)換

a = 2
print(float(a))

b = 5.6
print(int(b))

c = '3'
print(type(int(c)))

d = '5.6'
print(type(float(c)))

e = 5
print(complex(e))

f = 6.5
print(complex(f))

輸出:

2.0
5
<class 'int'>
<class 'float'>
(5+0j)
(6.5+0j)

需要注意的幾個(gè)點(diǎn):

  • 當(dāng)我們將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)時(shí),小數(shù)部分會(huì)被截?cái)?/li>
  • 不能將復(fù)數(shù)類型的數(shù)字轉(zhuǎn)換為整數(shù)類型或浮點(diǎn)類型的數(shù)字
  • 不能對字符串應(yīng)用復(fù)數(shù)的內(nèi)置函數(shù)。

五、Python Decimal Numbers

和 Java一樣,Python 對浮點(diǎn)數(shù)進(jìn)行算術(shù)運(yùn)算也可能會(huì)產(chǎn)生一些意想不到的結(jié)果,下面通過幾個(gè)示例進(jìn)行說明:

示例 1:1.1 + 2.2 = ?

很多人會(huì)認(rèn)為這個(gè)運(yùn)算的結(jié)果應(yīng)該是 3.3,但 Python 給出的輸出如下:

a = 1.1
b = 2.2
c = a + b

print(c)

輸出:

3.3000000000000003

示例 2:1.2 - 1.0 = ?

我們會(huì)期望結(jié)果是 0.2,但讓我們看看 Python 給出的輸出。

a = 1.2
b = 1.0
c = a - b

print(c)

輸出:

0.19999999999999996

大家可能會(huì)認(rèn)為 Python 有問題,但實(shí)際上并不是。這與 Python 關(guān)系不大,而更多與底層平臺(tái)如何處理浮點(diǎn)數(shù)有關(guān)。這是處理系統(tǒng)內(nèi)部浮點(diǎn)數(shù)時(shí)常見的問題。這個(gè)問題是由于內(nèi)部浮點(diǎn)數(shù)表示使用固定數(shù)量的二進(jìn)制數(shù)字來表示小數(shù)而引起的。在許多情況下,某些小數(shù)在二進(jìn)制中很難表示,因此會(huì)導(dǎo)致小的舍入誤差。

在這種情況下,以 1.2 為例,0.2 在二進(jìn)制中的表示是 0.00110011001100110011001100……,很難在內(nèi)部存儲(chǔ)這個(gè)無限小數(shù)。通常,一個(gè)浮點(diǎn)對象的值以固定精度(二進(jìn)制浮點(diǎn)數(shù),通常為 53 位)存儲(chǔ)。因此,我們內(nèi)部表示 1.2 為:

1.0011001100110011001100110011001100110011001100110011  

這正好等于:

1.1999999999999999555910790149937383830547332763671875

對于這種情況,Python 的 decimal 模塊可以解決問題。如前所述,浮點(diǎn)數(shù)的精度只有到小數(shù)點(diǎn)后 15 位,但在十進(jìn)制數(shù)中,精度是用戶定義的。它以我們在學(xué)校學(xué)習(xí)的方式對浮點(diǎn)數(shù)進(jìn)行運(yùn)算。

讓我們看看上面兩個(gè)示例,并嘗試使用十進(jìn)制數(shù)解決它們。

示例:

import decimal

a = decimal.Decimal('1.1')
b = decimal.Decimal('2.2')

c = a + b
print(c)

輸出:

3.3

我們可以在以下情況下使用 decimal 模塊:

  • 當(dāng)我們希望自行定義所需的精度時(shí)
  • 對于需要精確十進(jìn)制表示的金融應(yīng)用程序

六、Python 和 Java數(shù)字類型的對比

Python 和 Java 都是強(qiáng)類型語言,但它們處理數(shù)值類型的方式有所不同。以下是 Python 數(shù)字類型和 Java 數(shù)字類型的對比:

整數(shù)類型

Python語言:

int: 在 Python 3 中,int 類型可以表示任意大小的整數(shù),不存在 long 類型的區(qū)別。

num = 123456789012345678901234567890
print(type(num))  # 輸出:<class 'int'>

Java語言:

  • byte: 8 位有符號整數(shù),范圍從 -128 到 127。
  • short: 16 位有符號整數(shù),范圍從 -32,768 到 32,767。
  • int: 32 位有符號整數(shù),范圍從 -2^31 到 2^31-1。
  • long: 64 位有符號整數(shù),范圍從 -2^63 到 2^63-1。
int num = 1234567890;
long bigNum = 1234567890123456789L;

浮點(diǎn)數(shù)類型

Python語言:

  • float: Python 的 float 類型是雙精度浮點(diǎn)數(shù)(64 位),即 C 語言中的 double。
num = 3.14159
print(type(num))  # 輸出:<class 'float'>

Java語言:

  • float: 32 位單精度浮點(diǎn)數(shù)。
  • double: 64 位雙精度浮點(diǎn)數(shù)。
float num = 3.14f;
double bigNum = 3.14159;

復(fù)數(shù)類型

Python語言:

  • complex: Python 原生支持復(fù)數(shù),使用 complex 類型表示,復(fù)數(shù)由實(shí)部和虛部組成。
num = 2 + 3j
print(type(num))  # 輸出:<class 'complex'>

Java語言:

  • Java 沒有內(nèi)置的復(fù)數(shù)類型。如果需要處理復(fù)數(shù),可以使用第三方庫如 Apache Commons Math。

高精度類型

Python語言:

  • decimal: Python 提供 decimal 模塊用于高精度十進(jìn)制運(yùn)算。
import decimal
num = decimal.Decimal('3.14159')
print(type(num))  # 輸出:<class 'decimal.Decimal'>

Java語言:

  • BigDecimal: Java 提供 BigDecimal 類用于高精度十進(jìn)制運(yùn)算。
import java.math.BigDecimal;
BigDecimal num = new BigDecimal("3.14159");

類型轉(zhuǎn)換

Python語言:

  • Python 使用內(nèi)置函數(shù)進(jìn)行類型轉(zhuǎn)換,如 int(), float(), complex(), 和 str()。
a = 5
b = float(a)  # 轉(zhuǎn)換為浮點(diǎn)數(shù)

Java語言:

  • Java 使用顯式類型轉(zhuǎn)換和包裝類進(jìn)行類型轉(zhuǎn)換,如 (int), (double), Integer.parseInt(), Double.parseDouble()。
int a = 5;
double b = (double) a;  // 轉(zhuǎn)換為浮點(diǎn)數(shù)

總結(jié)

本文我們分析了 Python 的 Number類型,它包含:

  • int
  • float
  • complex

接著,我們對比了 Java 和 Python 語言的數(shù)字類型:

  • 整數(shù): Python 的 int 類型可以表示任意大小的整數(shù),而 Java 有多種整數(shù)類型(byte, short, int, long)。
  • 浮點(diǎn)數(shù): Python 使用 float 表示雙精度浮點(diǎn)數(shù),而 Java 有單精度和雙精度浮點(diǎn)數(shù)(float, double)。
  • 復(fù)數(shù): Python 原生支持復(fù)數(shù),而 Java 需要使用第三方庫。
  • 高精度: Python 使用 decimal 模塊,Java 使用 BigDecimal 類。
  • 類型轉(zhuǎn)換: Python 使用內(nèi)置函數(shù),Java 使用顯式類型轉(zhuǎn)換和包裝類。

盡管語言語法上有差異,但是底層的邏輯是相通的。

責(zé)任編輯:趙寧寧 來源: 猿java
相關(guān)推薦

2018-08-09 18:27:03

編程語言JavaPython

2010-08-13 14:58:01

FlexNumber數(shù)據(jù)類型

2014-06-19 10:48:18

RubyPython

2024-04-18 09:16:03

EnumeratePythonFor循環(huán)

2022-07-20 12:24:38

Python列表集合

2023-09-22 12:25:29

參數(shù)C++

2020-09-16 12:18:28

GoJava模式

2023-10-08 08:41:04

JavaPython編程語言

2019-07-08 10:36:34

數(shù)據(jù)庫WebNoSQL

2023-05-15 12:33:47

JavaPython編程語言

2009-06-22 14:22:41

JSF和Tapestr

2013-08-20 13:22:35

PythonGo編程語言

2010-10-28 17:13:25

Oracle numb

2015-04-13 10:54:42

java.netHashSet

2023-11-30 15:02:34

Python

2017-09-13 15:37:53

2023-11-27 19:42:56

Python GUI編程

2011-08-05 13:41:46

Go

2019-03-22 08:25:20

x86PythonARM

2021-12-13 11:21:46

NodePython開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號