У меня есть приведенный ниже код для проверки числового значения c, обеспечивающего приращение в 'дробь' i, которое отлично работает для 0,25, 0,5 и c, но не 0,1, 0,01
export function buildFractionStepTest(message: () => string,fraction: number): Yup.TestOptions{ return {
name: 'fractionStepNumericValue',
test: (value: number | null) =>
typeof value !== 'number' || value % fraction === 0,
message };}
ValidationSchema = (): Yup.Schema<any> => {
return Yup.object().shape(
{
fieldname : Yup.number().test(
buildFractionStepTest(() => {
return `Value for field must be the nearest multiple of ${formattingSettings.step}`;
}, formattingSettings.step) );}}
Два нижеследующих случая проверяются надлежащим образом
Пример: дробь = 0,5
Допустимые значения Numeri c: 0,5, 1, 1,5, 2 и т. c ( кратно 0,5)
Недопустимые значения: 0,6, 1,1, 1,3 и т. д. c
Фракция: 0,25 Допустимые значения: 0,25, 0,5, 0,75, 1 и т. c (кратно 0,25)
Неверные значения: 0,3, 0,8, 1,3, 1,6 и т. Д. c
Проблема возникает для
Фракции: 0,1 / 0,01