Python程式碼讀取
# -*- coding: utf-8 -*-
# @Time : 2019/5/22 13:53
# @Author : 甄超鋒
# @Email : [email protected]
# @File : aaa.py
# @Software: PyCharm
import xlrd
# xled讀取
workbook = xlrd.open_workbook("aaa.xlsx")
sheet2 = workbook.sheet_by_index(4)
rows1 = sheet2.row_values(22)
print(rows1[2])
import openpyxl
# openpyxl讀取
wb = openpyxl.load_workbook("aaa.xlsx",)
a_sheet = wb.get_sheet_by_name("表五")
b4_too = a_sheet.cell(row=23, column=3)
print(b4_too.value)
# print(int(b4_too.value))
# print(float(b4_too.value))
# pandas讀取
import pandas as pd
io = "aaa.xlsx"
data = pd.read_excel(io, sheet_name = "表五",)
# a = data.head()
print(data.values)
出現這種問題的原因是
浮點數的儲存誤差
計算機能精確儲存0.1嗎?答案是,不能。
你會問,為啥不能?又不是有無限位,為啥不能?呃,計算機是用二進位制來儲存你心裡想著的十進位制小數。0.1是十進位制小數,轉換成二進位制小數後,二進位制小數是無限位的。
計算機能精確儲存0.01嗎?答案是,不能。只能儲存0.01的近似值。
計算機能精確儲存0.3嗎?答案是,不能。只能儲存0.3的近似值。
這就能夠解釋為什麼輸出內容中的第3行輸出的積不是0.01,而是0.010000000000000002。後者正是前者的近似值。也能解釋為什麼輸出內容中的第5行輸出的和不是0.3,而是0.30000000000000004。
對多數實數,計算機都無法精確儲存。這造成誤差。在用計算機解決實際問題時,要考慮上述誤差的積累。
Python程式碼讀取
# -*- coding: utf-8 -*-
# @Time : 2019/5/22 13:53
# @Author : 甄超鋒
# @Email : [email protected]
# @File : aaa.py
# @Software: PyCharm
import xlrd
# xled讀取
workbook = xlrd.open_workbook("aaa.xlsx")
sheet2 = workbook.sheet_by_index(4)
rows1 = sheet2.row_values(22)
print(rows1[2])
import openpyxl
# openpyxl讀取
wb = openpyxl.load_workbook("aaa.xlsx",)
a_sheet = wb.get_sheet_by_name("表五")
b4_too = a_sheet.cell(row=23, column=3)
print(b4_too.value)
# print(int(b4_too.value))
# print(float(b4_too.value))
# pandas讀取
import pandas as pd
io = "aaa.xlsx"
data = pd.read_excel(io, sheet_name = "表五",)
# a = data.head()
print(data.values)
出現這種問題的原因是
浮點數的儲存誤差
計算機能精確儲存0.1嗎?答案是,不能。
你會問,為啥不能?又不是有無限位,為啥不能?呃,計算機是用二進位制來儲存你心裡想著的十進位制小數。0.1是十進位制小數,轉換成二進位制小數後,二進位制小數是無限位的。
計算機能精確儲存0.01嗎?答案是,不能。只能儲存0.01的近似值。
計算機能精確儲存0.3嗎?答案是,不能。只能儲存0.3的近似值。
這就能夠解釋為什麼輸出內容中的第3行輸出的積不是0.01,而是0.010000000000000002。後者正是前者的近似值。也能解釋為什麼輸出內容中的第5行輸出的和不是0.3,而是0.30000000000000004。
對多數實數,計算機都無法精確儲存。這造成誤差。在用計算機解決實際問題時,要考慮上述誤差的積累。