如何避免javascript中的十进制错误?
我正在使用VueJS和Quasar框架制作一个用于添加产品的表单 我在计算方面遇到了一些小问题,但很关键。 有时我会发现产品的价格有问题,比如.01。我用谷歌搜索我的方法发现Javascript计算十进制值的方式有问题,显然不是整数值的问题 我很快制作了一个JSFIDLE,您可以通过在第一个字段(价格)中添加100,然后将VAT select更改为任何值(FIDLE有一个错误,并使用以前选择的值而不是当前值进行计算)来重新创建我的问题 它应该保持在100,但返回100.01 这里是来自真实项目的代码如何避免javascript中的十进制错误?,javascript,vue.js,math,quasar,Javascript,Vue.js,Math,Quasar,我正在使用VueJS和Quasar框架制作一个用于添加产品的表单 我在计算方面遇到了一些小问题,但很关键。 有时我会发现产品的价格有问题,比如.01。我用谷歌搜索我的方法发现Javascript计算十进制值的方式有问题,显然不是整数值的问题 我很快制作了一个JSFIDLE,您可以通过在第一个字段(价格)中添加100,然后将VAT select更改为任何值(FIDLE有一个错误,并使用以前选择的值而不是当前值进行计算)来重新创建我的问题 它应该保持在100,但返回100.01 这里是来自真实项目
<q-input
v-model="product.price"
type="number"
@input="updatePriceIncVat"
/>
<q-input
v-model="product.price_vat"
type="number"
@input="updatePriceExclVat"
/>
<q-select
v-model="product.vat"
:options="selectVat"
emit-value
map-options
@input="updatePriceExclVat"
/>
data () {
return {
product: {
price: '',
price_vat: '',
vat: 1.24
},
selectVat: [
{
label: '0%',
value: 1
},
{
label: '10%',
value: 1.10
},
{
label: '14%',
value: 1.14
},
{
label: '24%',
value: 1.24
}
]
}
methods: {
updatePriceIncVat () {
this.product.price_vat = Number((this.product.price / this.product.vat).toFixed(2))
},
updatePriceExclVat () {
this.product.price = Number((this.product.price_vat * this.product.vat).toFixed(2))
}
}
}
数据(){
返回{
产品:{
价格:'',
价格/增值税:'',
增值税:1.24
},
选择增值税:[
{
标签:“0%”,
价值:1
},
{
标签:“10%”,
价值:1.10
},
{
标签:“14%”,
价值:1.14
},
{
标签:“24%”,
价值:1.24
}
]
}
方法:{
updatePriceIncVat(){
this.product.price_vat=编号((this.product.price/this.product.vat).toFixed(2))
},
UpdatePriceExcluvat(){
this.product.price=编号((this.product.price_vat*this.product.vat).toFixed(2))
}
}
}
我已经试过了
round(),尝试通过与100相乘、删除小数并再次除以正确的数字来避免小数。但在某个时刻,我还是会乘以一个小数点,这会把事情搞砸
谢谢你,如果你来了这么远,我真的很感谢你利用你的时间来帮助我。input,100.00=>80.65,input 100.01结果保持不变80.65,检查了其他几个增值税计算器,它们的行为相同,别担心)这是累积舍入错误。如果你把
换成@input
,这有意义吗?我还发现增值税计算器也有同样的问题。但对我来说,这不仅仅是一个计算器,它设定了产品的价格。有时一个价值25,00欧元的产品会显示为25,01欧元。这是一个很小的区别,但很关键,因为应用程序生成发票,你不能发送错误的发票,即使是通过1cAnatoly,great thx,你知道如何处理它吗?输入,100.00=>80.65,输入100.01结果保持不变80.65,检查了其他几个增值税计算器,它们的行为相同,别担心)这是累积舍入错误。如果你把
换成@input
,这有意义吗?我还发现增值税计算器也有同样的问题。但对我来说,这不仅仅是一个计算器,它设定了产品的价格。有时一个价值25,00欧元的产品会显示为25,01欧元。这是一个很小的区别,但很关键,因为应用程序会生成发票,即使通过1 Canatoly,great thx,您也不能发送错误的发票,您知道如何绕过它吗?