繁体   English   中英

输入类型号,十进制值

[英]Input type number, decimal value

如何在不使用正则表达式的情况下验证输入类型号是否包含最多 3 个小数

let x = 1.5555
let y = 1.55
x is false
y is true

您可以使用如下公式:

(x * 1000) % 1 === 0

对于小数点后三位或更少的数字, x*1000会将其转换为 integer。 例如:

1.55 -> 1550
1.555 -> 1555 

对于多于 3 位小数的数字,执行x*1000不会将其转换为 int,它只会将部分数字移至:

1.5555 -> 1555.5 // still a decimal

% 1检查然后得到上面数字的余数,如果它被1除。如果余数为0,那么这个数字被转换为integer,如果大于0,那么x*1000转换失败将数字转换为 int,这意味着它有 3 个以上的小数:

 const validate = x => (x * 1000) % 1 === 0; console.log(validate(1.5555)); // false console.log(validate(1.55)); // true console.log(validate(1.555)); // true console.log(validate(0.00000001)); // false

您可以使用toString()方法转换为字符串,然后在该点拆分. 使用.split()方法,这将产生一个数组。 数组中的第一个元素是一个包含整数部分的字符串,这对我们来说并不有趣。 结果数组中索引 1 处的第二个元素是字符串形式的小数部分。

现在您可以检查该字符串的长度属性,如果它等于或小于三,这意味着它具有三个或更少的十进制数字,那么我们在验证 function 中返回 true,否则我们返回 false。

 const x = 1.5555; const y = 1.555; const z = 1.55 function validate(num){ return num.toString().split(".")[1].length <= 3; } console.log(validate(x)); console.log(validate(y)); console.log(validate(z));

这可能会解决您的问题

let x = 1.5555;
let y = 1.55;
int length = x.Substring(number.IndexOf(".")).Length;
bool result = length > 3 ? true: false;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM