[問題]複數 浮點數 有理數的一些問題

作者: LessonWang (橘白Cat)   2017-07-02 11:41:47
如題 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
作者: LessonWang (橘白Cat)   2017-07-02 11:58:00
我覺得我應該換個方式問有沒有任何函數或模組可以判斷某個數值是屬於超越數
作者: Django (Cython)   2017-07-02 15:00:00
作者: LessonWang (橘白Cat)   2017-07-02 15:22:00
後來看sympy 已經有很強大的代數運算了 就不用手刻了xdd

Links booklink

Contact Us: admin [ a t ] ucptt.com