Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 Vue getter/setter行为在*和/比100时显示意外的副作用_Javascript_Vue.js_Floating Point - Fatal编程技术网

Javascript Vue getter/setter行为在*和/比100时显示意外的副作用

Javascript Vue getter/setter行为在*和/比100时显示意外的副作用,javascript,vue.js,floating-point,Javascript,Vue.js,Floating Point,我在Vue组件中有一个getter和setter函数,理想情况下,它允许用户将百分比作为整数输入,我的应用程序将它们作为小数使用。下面是getter/setter: theValue:{ //display whole numbers to the user get(){ if(this.value < 1){ return this.value * 100 } return this.value }, // set the decima

我在Vue组件中有一个getter和setter函数,理想情况下,它允许用户将百分比作为整数输入,我的应用程序将它们作为小数使用。下面是getter/setter:

theValue:{
  //display whole numbers to the user
  get(){
    if(this.value < 1){
      return this.value * 100
    }
    return this.value
  },
  // set the decimal into the application
  set(update){
    this.$emit("input", val/100 );
  }
}
值:{
//向用户显示整数
得到(){
如果(该值小于1){
返回此值。值*100
}
返回此.value
},
//将小数点设置到应用程序中
设置(更新){
这是$emit(“输入”,val/100);
}
}
setter按预期工作,但是,当getter再次收到该值时,会产生一些意想不到的结果

输入7时,输入上显示7.0000000001。应用程序显示.07很好。 当您在输入中键入111时,它立即显示1.11

我可以在控制台中复制这个问题,解决这个问题的实际方法是什么


注意:这些是可重用的组件,应用程序中的某些值最多可以有7个前导零作为有效值。使用
toFixed()。理论上,我可以写两种不同的成分,一种是简单的数字到百分之一,另一种是过去的数字。我想知道是否有什么办法可以优雅地做到这一点

这回答了你的问题吗?这解决了这个问题,但没有具体给出答案。我觉得很有趣,在所有Javascript中,没有人真正知道如何解决这个问题。但是,我已经找到了一个解决方法.get(){if(this.value<1){返回数字(Math.abs(this.value*100).toFixed(2));}