Javascript 代表不平等比较极限的数字
Javascript numbers representing limits of inequality comparisons
我正在处理一组值,使得 0 < 值 < 1。我想验证一些数据,以便将超出此范围的值修改为最接近的有效值。经过一些实验,我发现 Number.MIN_VALUE
是表示下限的最佳方式。但是,上限 1 - Number.MIN_VALUE
出现意外行为:
鉴于:
Number.MIN_VALUE; //5e-324
和 Number.MIN_VALUE > 0; //true
1 - Number.MIN_VALUE; //1
和 1 - Number.MIN_VALUE < 1; //false
那么,生成 Javascript 中满足 a < value < b 形式的不等式的最小和最大数字的最佳方法是什么?
JavaScript 浮点数的尾数有 52 位。通过非规范化,最小浮点数可以非常小,5e-324
——这表示为 51 个零位、1 个一位和最大的负指数。
但是你不能接近 1
,因为它的表示都是一个位,你不能使用指数来增加范围。受浮点精度限制
因此值将如下所示:
console.log(1 - .5**53);
我正在处理一组值,使得 0 < 值 < 1。我想验证一些数据,以便将超出此范围的值修改为最接近的有效值。经过一些实验,我发现 Number.MIN_VALUE
是表示下限的最佳方式。但是,上限 1 - Number.MIN_VALUE
出现意外行为:
鉴于:
Number.MIN_VALUE; //5e-324
和 Number.MIN_VALUE > 0; //true
1 - Number.MIN_VALUE; //1
和 1 - Number.MIN_VALUE < 1; //false
那么,生成 Javascript 中满足 a < value < b 形式的不等式的最小和最大数字的最佳方法是什么?
JavaScript 浮点数的尾数有 52 位。通过非规范化,最小浮点数可以非常小,5e-324
——这表示为 51 个零位、1 个一位和最大的负指数。
但是你不能接近 1
,因为它的表示都是一个位,你不能使用指数来增加范围。受浮点精度限制
因此值将如下所示:
console.log(1 - .5**53);