Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算浮点的剩余部分并使用javascript进行转换?_Javascript_Decimal - Fatal编程技术网

计算浮点的剩余部分并使用javascript进行转换?

计算浮点的剩余部分并使用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

例如,在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("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");
}