[英]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.