python添加浮点数并保留最大的小数部分

时间:2019-05-07 08:21:41

标签: python-3.x math

在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

请帮助我如何解决这个问题?

1 个答案:

答案 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 ,因为如果输入浮点数,则在识别为浮点数且更改为小数点之前已经发生了错误。