diff --git a/packages/stepper/index.ts b/packages/stepper/index.ts index 2bacbd43..0f275e9a 100644 --- a/packages/stepper/index.ts +++ b/packages/stepper/index.ts @@ -5,6 +5,12 @@ import { addUnit, isDef } from '../common/utils'; const LONG_PRESS_START_TIME = 600; const LONG_PRESS_INTERVAL = 200; +// add num and avoid float number +function add(num1: number, num2: number): number { + const cardinal = 10 ** 10; + return Math.round((num1 + num2) * cardinal) / cardinal; +} + VantComponent({ field: true, @@ -18,7 +24,10 @@ VantComponent({ buttonSize: null, asyncChange: Boolean, disableInput: Boolean, - decimalLength: Number, + decimalLength: { + type: Number, + value: null + }, min: { type: null, value: 1 @@ -128,12 +137,7 @@ VantComponent({ } const diff = type === 'minus' ? -this.data.step : +this.data.step; - - let value = +this.data.value + diff; - - if (!isDef(this.data.decimalLength)) { - value = Math.round(value * 100) / 100; - } + const value = add(+this.data.value, diff); this.triggerInput(this.range(value)); this.$emit(type);