2011-07-23 146 views
0

如果我作出这样的简单的返回这样处理红宝石浮法像java

double example() 
{ 
    double i = 999999999; 
    return i; 
} 

双值的函数的输出将是:

例如()=> 9.99999999E8

我不不知道如何用红宝石获得它..有人可以帮助我吗?

回答

1

要只是把它变成一个浮动,你可以使用to_f,显示在科学记数法格式字符串会有所帮助:

>> 999999999.to_f #=> 999999999.0 
>> "%E" % 999999999 #=> "1.000000E+09" 
+0

是不可能获得与java相同的值? (9.99999999E8),因为我需要从999999999准确获得9.99999999E8 –

+0

它只是以不同的方式显示。例如,(“%.7E”%999999999.0)显示“9.999999999E + 08”。我不知道是否有显示设置将E + 08更改为E8,但请在此处查看printf文档:http://linux.die.net/man/3/printf – c4757p

1

对于您的示例,请使用浮点文字而不是整数文字。也就是说,999999999.0型或9.99999999e8代替999999999如果它是一个变量,而不是(例如,x),使用x.to_f:

def f() 
    999999999.0 
end 

def f() 
    (999999999).to_f 
end 
+0

就不可能获得相同的值作为java吗? (9.99999999E8),因为我需要从999999999获得确切的9.99999999E8 –

+0

您是。 (999999999).to_f给出9.99999999E8。或者你的意思是这种格式? Ruby不同地显示数字。除了编写自己的格式化函数外,没有什么可以做的,因为没有改变它的选项。 – c4757p