js中十进制数的大部分

时间:2016-12-09 08:31:31

标签: javascript

我有这个问题:

编写一个接收十进制数的函数 greaterpart 。该数字应大于零。 该函数需要识别十进制数的较大部分,无论是整数还是 小部分,然后警告更大的部分。 例如:

greaterpart(32.45)提醒 45
greaterpart(301.71)提醒 301

这是我的解决方案:

function graterpart(x){
  if(x<0){
    alert("Number can not be null");
  }

  else{
    var x;
    var y;
    y= parseFloat(x);
    var remainder = (y-Math.floor(y))*10000;
    if(y>remainder){
      alert(y);
    } else{
      alert(remainder);
    }
  }
}
graterpart(32.45);

但它没有按预期工作。
我在这做错了什么?提前谢谢。

4 个答案:

答案 0 :(得分:3)

简单地将其转换为字符串拆分。得到两个元素数组parseInt,并比较最简单的

&#13;
&#13;
var s = 56.69;
//console.log(s.toString())
var d = s.toString().split(".");

var greater = (parseInt(d[0],10) > parseInt(d[1],10)) ? d[0] : d[1];

alert(greater);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

试试这个:

<script>
function greaterpart(x){
    alert(Math.max.apply(this, x.toString().split('.')));
}
greaterpart(32.45);
</script>

Math.max()会将String.prototype.split()返回的字符串隐式转换为数字。

如果你不理解这个功能,可以用不同的步骤重新制定它:

将数字转换为字符串:

x = x.toString();

将其拆分为小数点:

var parts = x.split('.');  // Is now ["32", "45"]

获取最大值:

var greater = Math.max(parts[0], parts[1]);

但是有一个更短的方式。记住这一点:

var result1 = fun(arg1, arg2, arg3);
var result2 = fun.apply(thisValue, [arg1, arg2, arg3]);

第二行看起来有些复杂,但与第一行完全相同。您现在可以使用它来简化对Math.max()的调用:

var greater = Math.max.apply(this, parts);

现在用console.log()或alert()输出它。

答案 2 :(得分:0)

可以这样简单地完成:

 var number = 312.25;

 var numberStr = number.toString();

 var twoParts = numberStr.split(".");

 if ((parseInt(twoParts[0])) > (parseInt(twoParts[1]))){ 
     alert (twoParts[0]);
 }else {
     alert(twoParts[1]);
 } 

答案 3 :(得分:0)

我认为最好的方法是将小数转换为字符串,然后将其拆分为“。”,将两个部分转换为整数并提醒大部分。

function graterpart(x){
  if(x < 0){
        alert("Number can not be null");
  }else{
    var str = x.toString();
    if(str.indexOf(".") != -1){
      var parts = str.split(".");
      var first_part = parseInt(parts[0]);
      var second_part = parseInt(parts[1]);

      alert(Math.max(first_part, second_part));
    }else{
        alert(x);
    }
  }
}
graterpart(321.45);

https://jsfiddle.net/x7on7xjk/