计算浮点的剩余部分并使用javascript进行转换?
例如,在js中将码转换为英里的函数是:计算浮点的剩余部分并使用javascript进行转换?,javascript,decimal,Javascript,Decimal,例如,在js中将码转换为英里的函数是: function yards_2_miles(num) { return num *= 0.000568182; } 我们希望转换3000码: var a = yards_to_miles(3000); // gives us 1.70455 miles 现在我的问题是计算小数点(余数)后的所有内容,看看它是否等于一个整数(以码为单位,以伪码为单位) if the remainder equals a whole number alert
function yards_2_miles(num)
{
return num *= 0.000568182;
}
我们希望转换3000码:
var a = yards_to_miles(3000); // gives us 1.70455 miles
现在我的问题是计算小数点(余数)后的所有内容,看看它是否等于一个整数(以码为单位,以伪码为单位)
if the remainder equals a whole number
alert("1 mile 200 yards);
else
alert(3.2 miles);
我不确定这是否令人困惑,但我的数学不好。剩余码数是模数,由
yards % 1760
整英里数是码除以(一英里中的码),作为一个整数:
parseInt(yards / 1760)
因此,您可以将函数编写为
function yards_2_miles(num)
{
var miles = parseInt(num / 1760);
var yards = num % 1760;
return miles + " miles and " + yards + " yards";
}
编辑:这里,一个更健壮的解决方案结合了我的原始答案和adam的答案
function show_yards_to_miles(yards) {
miles = Math.floor(yards / 1760);
rem = yards % 1760;
if(rem == Math.floor(rem))
alert(miles + " miles " + rem + " yards");
else
alert(yards / 1760 + " miles");
}
我认为这是行不通的——如果我把3211放在JSFIDLE中,我会得到
1.824432402英里
如果根据OP给出的转换,它不是精确的码数,它会以小数形式给出。这就是问题的目的。@adam这可能是舍入错误。这就是为什么使用%更好的原因。我只是想把我的答案建立在OP代码的基础上。如果你想要1760转换,这里是小提琴:
function show_yards_to_miles(yards) {
miles = Math.floor(yards / 1760);
rem = yards % 1760;
if(rem == Math.floor(rem))
alert(miles + " miles " + rem + " yards");
else
alert(yards / 1760 + " miles");
}