在JavaScript中,如何仅在数字以9结尾时舍入?

在JavaScript中,如何仅在数字以9结尾时舍入?,javascript,rounding,Javascript,Rounding,我想知道是否有办法只在我的数字以nine结尾时对其进行四舍五入 例如,我的10.9应该四舍五入到11,但如果我的10.8则不应该四舍五入 获取数字的小数(基数)部分。 基数=数字%1.0 检查基数是否在0.9和1.0之间。 实际上使用>0.8999而不是=0.9,因为0.9在IEEE-754中没有精确的表示 切勿将==用于浮点数,因为它们没有精确的表示形式 如果基数介于范围之间,请使用Math.ceil 像这样: function roundUpIfDotNine( n ) {

我想知道是否有办法只在我的数字以
nine
结尾时对其进行四舍五入

例如,我的
10.9
应该四舍五入到
11
,但如果我的
10.8
则不应该四舍五入

  • 获取数字的小数(基数)部分。
    • 基数=数字%1.0
  • 检查基数是否在
    0.9
    1.0
    之间。
    • 实际上使用
      >0.8999
      而不是
      =0.9
      ,因为
      0.9
      在IEEE-754中没有精确的表示
    • 切勿将
      ==
      用于浮点数,因为它们没有精确的表示形式
  • 如果基数介于范围之间,请使用
    Math.ceil
  • 像这样:

    function roundUpIfDotNine( n ) {
    
        var radix = n % 1.0;
        if( radix > 0.899 && radix < 1.0 ) {
            return Math.ceil( n );
        }
        else {
            return n;
        }
    }
    
    函数roundUpIfDotNine(n){
    变量基数=n%1.0;
    if(基数>0.899&&基数<1.0){
    返回Math.ceil(n);
    }
    否则{
    返回n;
    }
    }
    
    通过将其临时转换为字符串,您可以获取最后一个字符并检查它是否为9:

    const dontRoundUnlessEndsInNine = (num) => {
        return (String(num).substr(-1) === '9') ? Math.ceil(num) : num;
    }
    
    您可以检查值

    函数轮(v){
    返回数学楼层(v+0.1)==v+0.1
    ?v+0.1
    :v;
    }
    console.log(圆形(10.9));//11
    
    console.log(圆形(10.8));//10.8最短路的解决方案

    函数轮(v)
    {
    返回(''+v).slice(-1)==9?v+0.1:v;
    }
    console.log(圆形(10.9));//11
    
    console.log(圆形(10.8));//10.8
    我对使用JS函数实现这一点有点想法 详情如下:

    function qwerty() {
    
      var number = 11.9;
      var numberStringArr =  number.toString().split(".");
    
      if(numberStringArr[1] == 9) { // if condition is true, it will add 1
        var num = number + 1;
        var numberStringArr = num.toString().split(".")
        alert(numberStringArr[0]);
      } else {
        alert("No Change");
      }
    }
    qwerty();
    
    已经为JSFIDLE提供了一个链接

    当然有!你试过什么?我建议不要用javascript来计算。。。如果可能的话,让我稍作修改。您需要在问题中添加一个代码示例。欢迎使用堆栈溢出!请带上这本书,参观一下,然后仔细阅读。在做了一些研究和相关的话题之后,你可以自己尝试一下。如果你被卡住了,在你被卡住的地方贴一张你的试贴。人们会很乐意帮忙的。3.49会变成3.5,而3.48会保持在3.48吗?负数的值只是正数的反映吗?你需要一个更详细的说明。只有当数字在.9和1之间时,这才有效,对吗?我的小提琴有点不对劲。是的,有些地方不对劲:
    console.log(roundUpIfDotNine(0.1))//1
    虽然没有明确说明,但我可以想象需要对
    .9
    或更高版本的内容进行取整