在Python中,我要添加浮点数。
我有电话号码
client_balance = 40360.7416622703
fund_manager_balance = 676.600516394647
uits= 6.72791159564433
这是我的python代码
def update_client_balance(self, record):
if record.client_id.account_name != ACCOUNT_MANAGER_NAME:
self.client_balance += record.units
def update_manager_balance(self, record):
if record.client_id.account_name == ACCOUNT_MANAGER_NAME:
self.fund_manager_balance += record.units
执行完这些功能后,我便有了
client_balance = 40360.7416622703
fund_manager_balance = 683.328427990291
现在我要手动验证这些功能的结果
so(client_balance + fund_manager_balance)(在函数执行之前)-uits-(client_balance + fund_manager_balance)(在函数执行之后)
按值
40360.7416622703 + 676.600516394647 + 6.72791159564433 - (40360.7416622703 + 683.328427990291) = -0.00000000000727595761418343
它应该给我零值,但它给我-0.00000000000727595761418343
请帮助我如何解决这个问题?
答案 0 :(得分:2)
如果您期望十进制绝对没有错误,那么decimal
模块非常适合您。
示例:
from decimal import Decimal
client_balance = Decimal('40360.7416622703')
fund_manager_balance = Decimal('676.600516394647')
uits= Decimal('6.72791159564433')
new_client = client_balance # no change according to your code.
new_manager = fund_manager_balance + uits
print(new_client)
print(new_manager)
# validate
err = client_balance + fund_manager_balance + uits - (new_client + new_manager)
print(err)
输出:
40360.7416622703
683.32842799029133
0E-14
注意:对于常量,请向小数输入 String ,因为如果输入浮点数,则在识别为浮点数且更改为小数点之前已经发生了错误。