作者LessonWang (橘白Cat)
看板Python
標題[問題]複數 浮點數 有理數的一些問題
時間Sun Jul 2 11:41:47 2017
如題 python新手發問
學了python一陣子之後
知道浮點數相減會有誤差
例如
0.9-0.8
結果是0.099999999999998
後來改良了一下
(0.9*10-0.8*10)/10
才是0.1
可是每次要這樣做很麻煩
於是有decimal模組
可是遇到複數又沒轍了
例如
0.9j-0.8j
也不會出現0.1j
就算用from decimal import Decimal as dc
complex(0,dc('0.9'))-complex(0,dc('0.8'))
也一樣不會出現0.1j
只能用complex(0,dc('0.9')-dc('0.8'))
後來只好自己手刻一個類別繼承complex
而且想到complex無法做有理數的運算
於是結合decimal fraction complex三種概念
做一個簡單的類別
但是有個問題是要如何使得運算結果是超越數時能保留表達式而不要用浮點數呈現呢?
我的code如下
https://repl.it/JKUH/35
-----
Sent from JPTT on my Asus ASUS_Z00UD.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.72.40
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498966911.A.1AF.html
※ 編輯: LessonWang (110.28.72.40), 07/02/2017 11:49:17
→ LessonWang: 我覺得我應該換個方式問 07/02 11:58
→ LessonWang: 有沒有任何函數或模組 07/02 11:58
→ LessonWang: 可以判斷某個數值是屬於超越數 07/02 11:58
→ Django: 希望對您有幫助(?) 07/02 15:00
d大 已看過這個官方文件了xd
沒有頭緒
※ 編輯: LessonWang (110.28.72.40), 07/02/2017 15:02:04
→ LessonWang: 後來看sympy 已經有很強大的代數運算了 就不用手刻了x 07/02 15:22
→ LessonWang: dd 07/02 15:22