From a01f966deaea79b6a07d2f7a53a3d70a4c65ea2e Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 11 Oct 2019 20:10:58 +0800 Subject: [PATCH] fix(Stepper): can't work when step is decimal (#2142) --- packages/stepper/index.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) 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);