【发布时间】:2010-01-06 14:49:58
【问题描述】:
嘿伙计们,我有 2 个浮点数,它们都来自输入框。
我需要比较这两个浮点数,如果一个是负数,一个是正数会抛出一个错误。如果它们都是正面的,或者都是负面的,那很好。
有什么想法吗?
谢谢
【问题讨论】:
-
如果一个是(或两个都是)零怎么办?
标签: javascript floating-point compare
嘿伙计们,我有 2 个浮点数,它们都来自输入框。
我需要比较这两个浮点数,如果一个是负数,一个是正数会抛出一个错误。如果它们都是正面的,或者都是负面的,那很好。
有什么想法吗?
谢谢
【问题讨论】:
标签: javascript floating-point compare
将它们相乘。
如果答案是肯定的,那么它们都是同一个符号。
如果答案是否定的,那么它们的符号相反。
如果答案为零(在某个值范围内以解决舍入误差),那么其中一个或两个都为零,您必须单独检查它们。然后,您必须决定在您的场景中将 0 视为正面还是负面。
【讨论】:
虽然可以检测产品的符号,但这不是您感兴趣的。特别是如果您要在大量浮点数上使用它(例如检测时间流中的零交叉)。
最简单的方法是准确表达你的要求:a 的符号是否等于 b 的符号?
function samesign( a, b ) {
var aPositive = a >= 0;
var bPositive = b >= 0;
return aPositive == bPositive;
}
或更短:
function samesign( a, b ) { return (a>=0) == (b>=0); }
【讨论】:
只需执行以下操作:
if float1*float2<0
Error
【讨论】:
function isSameSign(a,b){
var r = a*b;
return (r >= 0)
}
【讨论】: