Ruby指数问题

时间:2015-01-19 02:28:12

标签: ruby math algebra exponential

当我运行此脚本时:

pi=3.14
NozzleAreaM=.005**2*pi.to_f

它返回7.85e-05而不是正常计算器上的0.000078。我到处寻找,我找不到解决这个问题的方法。

1 个答案:

答案 0 :(得分:1)

您只需要告诉ruby您希望以何种格式显示 float

pi = 3.14 
nozzle_area = 0.005**2  * pi

printf "%.8f \n", nozzle_area

--output:--
0.00007850 

请参阅prinf / sprinf:

http://www.ruby-doc.org/core-2.2.0/Kernel.html#method-i-sprintf

请注意,以特定格式显示浮动不会影响ruby在内部存储浮动的方式。

另外,编写这样的代码很好:

pi=3.14
NozzleAreaM=.005**2*pi.to_f

...只要您永远不需要向其他人展示您的代码。如果您想询问有关代码的问题,那么您需要编写清晰的代码。这意味着你不应该把所有东西塞进去,没有空格。

此外,以大写字母开头的变量是ruby中的常量。如果您还不知道这意味着什么,请按照此规则生活:不要将任何变量名称大写。

另外,你的pi变量已经是 float (因为它有一个小数点),所以不需要调用to_f()

此外,ruby在Math模块中提供pi作为常量(自动需要Math模块):

nozzle_area = 0.005**2  * Math::PI

printf "%.8f \n", nozzle_area

--output:--
0.00007854