尝试进行服务器端验证(PHP),其中有 HTM5 数字输入:
<input ... min="1" max="20" step="0.1" />
浏览器将允许您输入诸如“10.5”之类的值,但是如何在 PHP 中进行双重检查呢?对于那些不会进行验证的浏览器(以及您不应该信任来自浏览器的数据的事实)。
if (fmod(floatval($value), 0.1) == 0) {
// valid
}
这不起作用,因为 fmod() 在这种情况下返回“0.099999 ...”,根据:
为什么 0.5 mod 0.1 在不同编程语言中的结果不同?
您可以将 $value 乘以 10,并使用 1(而不是 0.1)的模数检查,因此您可以进行整数数学运算……但是如果步长为 0.01 或 0.003,会发生什么情况?