2013-03-21 46 views
-3

在这里我有一个AS3华氏摄氏度转换器我想知道有没有更好的方式来完成同一功能,牢记这剂量工作暂时? < <虽然只有2位小数。 >>华氏摄氏转换器有没有更好的方法?

function RandomNumber(min:Number, max:Number = 0):Number 
{ 
    return Math.round(Math.random() * (max - min)) + min; 
} 

for(var i:int = 0; i < 20; i++) 
{ 
    var fahrenheit:Number = RandomNumber(-50, 100) 

    function fahrenheit2celsius(fahrenheit):Number 
    { 
     var celsius:Number = fahrenheit 
     celsius = fahrenheit - 32 
     celsius = celsius/1.8 
     celsius = celsius * 10^2 
     celsius = celsius + .5 
     celsius = celsius/10 
     return(celsius) 
    } 

    trace(fahrenheit + " fahrenheit",fahrenheit2celsius(fahrenheit) + " celsius",) 
} 
+0

你不应该声明你的'fahrenheit2celsius()'函数在'for'循环。此外,事件如果';'并不总是必需的,从不使用它们可能是bug的来源。为什么写'10^2'而不是'100',因为它会更清晰。最后,方法名称应该以小写字符开头,以帮助区分它们与类名称。 – duTr 2013-03-21 01:15:45

回答

2

为什么不这样:

function fahrenheit2celsius(fahrenheit):Number 
{ 
    var celsius:Number = (5/9)*(fahrenheit-32); 
    return Math.round(celsius); // <-- if you want to round to nearest int ? 
} 
+0

是的。但是它可以使用单独的函数来给出2个小数位。 – 2013-03-21 01:12:52

+0

你想要精确到两位小数,你在问什么? – Daedalus 2013-03-21 01:15:00

+2

@ScottAllen将*数字*转换为*字符串表示形式*(用于显示)时可以控制这一点。请参见['Number.toFixed'](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Number.html#toFixed())。 – 2013-03-21 01:21:42