如何解决如何通过逐步解决任何电位不匹配的步骤来增加/减少数字?
我正在尝试通过给定步骤编写用于增加/减少数字的逻辑
例如,当步骤设置为0.3
且给定数字值为0时;那么增量将为[0.3,0.6,0.9,...etc]
。
当给定数字值为1.4
并且步长为0.3
时,增量应以0.1
落在1.5
上,这是第五个增量。
这是我的尝试:
export class Spinner {
increase(currentValue,step) {
const step = step || 1;
const decimalSize = getDecimalSize(step);
const current = normalize(currentValue,decimalSize);
const ratio = Math.ceil(normalize(current / step,decimalSize));
let increment = normalize(ratio * step,decimalSize);
if (
normalize(current % step,decimalSize) === 0 ||
current === increment ||
normalize(current % step,decimalSize) === 1
) {
increment = normalize(current + step,decimalSize);
}
}
}
export function getDecimalSize(value: number) {
if (Math.floor(value) === value) return 0;
return value.toString().split(".")[1]?.length || 0;
}
export function normalize(value: number,decimalSize: number): number {
decimalSize = decimalSize || 1;
const n = Math.pow(10,decimalSize + 1);
return Math.round(value * n) / n;
}
这对于正数有效,但对负数则不能很好地工作
例如,如果当前值为-2,步长为0.3,我得到-1.8而不是-1.7
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。