我有一个大的十进制数,例如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 %>
最好的方法是什么?我不想导入任何东西,最好是
答案 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 API或Python3 API
中找到更多详细信息