100位浮点蟒蛇

时间:2015-12-15 01:44:47

标签: python floating-point precision

我有一个大的十进制数,例如2的平方根,我想查看前100个十进制数字。但是,float不支持此功能:<%= simple_form_for @user, :url => admin_user_path(@user) do |u| %> <%= u.simple_fields_for @test do |as| %> <%= as.label :response %><br> <%= as.text_area :response, :class => "tinymce", :rows => 15 %><br> <% end %> <table> <tr> <td> <%= u.input :field_name, :label => false, :boolean_style => :inline %> </td> <td>Field Name</td> </tr> </table> <br /><br /> <%= u.submit 'Update User', :class => 'btn btn-primary' %> <br /><br /> <% end %>

最好的方法是什么?我不想导入任何东西,最好是

1 个答案:

答案 0 :(得分:6)

如果您对精度的要求是100个十进制数字,我认为您必须使用decimal.Decimal

float中的Python并非专为此类精确计算而设计。

使用decimal.Decimal几乎与float一样简单,您可以执行+-*/以及其他一些常见问题在没有任何考虑的情况下直接在任何decimal.Decimal之间使用计算。

此外,decimal.Decimal支持直接设置所需的精度:

>>> from decimal import getcontext, Decimal
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')

您可以在此Python2 APIPython3 API

中找到更多详细信息