相关疑难解决方法(0)

如果我将一个浮点数复制到另一个变量,它们会相等吗?

我知道使用==检查浮点变量的相等性不是一个好方法。但我只想通过以下陈述来了解这一点:

float x = ...

float y = x;

assert(y == x)
Run Code Online (Sandbox Code Playgroud)

既然y是从 复制的x,那么这个断言是真的吗?

c++ floating-point

167
推荐指数
3
解决办法
1万
查看次数

为什么typeNNN会返回"数字"?

只是出于好奇.

typeof NaN数字似乎不合逻辑.顺便说一句,就像NaN === NaNNaN == NaN返回虚假一样.这是javascript的特点之一,还是有理由这样做?

编辑:谢谢你的回答.尽管让人们感到高兴并不容易.阅读答案和维基我理解得更多,但仍然是一句话

与NaN进行比较时,即使与自身进行比较,也会返回无序结果.比较谓词是信令或非信令,信令版本表示这种比较的无效例外.等式和不等式谓词是非信令的,因此x = x返回false可用于测试x是否是安静的NaN.

只是让我头晕目眩.如果有人能用人类(而不是数学家)的可读语言翻译,我会感激不尽.

javascript nan

153
推荐指数
6
解决办法
6万
查看次数

为什么NaN不等于NaN?

相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?

我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.

IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.

language-agnostic floating-point nan ieee-754

114
推荐指数
5
解决办法
3万
查看次数

PHP中的类型 - 杂耍和(严格)大于/小于比较

PHP以其类型杂耍而闻名.我必须承认这让我很困惑,而且我很难在比较中找出基本的逻辑/基本事物.

例如:如果$a > $b是真实的,$b > $c是真实的,必须将它意味着$a > $c永远真实的吗?

遵循基本逻辑,我会说是的,但是我很困惑,我真的不相信PHP.也许某人可以提供一个不是这样的例子?

另外,我想知道严格的小于和严格的大于运算符(因为它们的含义被严格描述,我过去只从等式比较中知道)如果左右操作数交换时有任何区别严格不平等的价值观:

# Precondition:
if ($a === $b) {
    throw new Exception(
       'Both are strictly equal - can not compare strictly for greater or smaller'
    );
}

($a > $b) !== ($b > $a)
Run Code Online (Sandbox Code Playgroud)

对于大多数类型比较组合,这些更大/更小的比较运算符没有记录,因此在这种情况下阅读手册并不是真正有用.

php comparison logic if-statement ieee-754

114
推荐指数
3
解决办法
1万
查看次数

103
推荐指数
2
解决办法
2万
查看次数

在python中分配变量NaN而不是numpy

大多数语言都有一个NaN常量,您可以使用它来为变量赋值NaN.python可以不使用numpy吗?

python constants nan

97
推荐指数
5
解决办法
14万
查看次数

检测NumPy数组是否包含至少一个非数字值?

我需要编写一个函数来检测输入是否包含至少一个非数字值.如果找到非数字值,我将引发错误(因为计算应该只返回一个数值).预先不知道输入数组的维数 - 无论ndim如何,该函数都应给出正确的值.作为一个额外的复杂功能,输入可以是单个浮点数numpy.float64,甚至可以是像零维数组一样的奇怪数据.

解决此问题的显而易见的方法是编写一个递归函数,该函数迭代数组中的每个可迭代对象,直到找到非迭代.它将numpy.isnan()在每个不可迭代的对象上应用该函数.如果找到至少一个非数字值,则该函数将立即返回False.否则,如果iterable中的所有值都是数字,则最终将返回True.

这很好,但它很慢,我希望NumPy有更好的方法来做到这一点.什么是更快,更numpyish的替代品?

这是我的模型:

def contains_nan( myarray ):
    """
    @param myarray : An n-dimensional array or a single float
    @type myarray : numpy.ndarray, numpy.array, float
    @returns: bool
    Returns true if myarray is numeric or only contains numeric values.
    Returns false if at least one non-numeric value exists
    Not-A-Number is given by the numpy.isnan() function.
    """
    return True
Run Code Online (Sandbox Code Playgroud)

python numpy

90
推荐指数
3
解决办法
8万
查看次数

将它们与==进行比较时,具有相同id的对象是否始终相等?

如果我有两个对象o1和o2,我们就知道了

id(o1) == id(o2)
Run Code Online (Sandbox Code Playgroud)

返回true.

然后,它是否遵循这一点

o1 == o2
Run Code Online (Sandbox Code Playgroud)

或者情况并非如此?我正在研究的论文说情况并非如此,但在我看来应该是真的!

python equality

59
推荐指数
3
解决办法
3883
查看次数

为什么NaN === NaN是假的?

为什么 在Javascript 中NaN === NaN返回false

> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false
Run Code Online (Sandbox Code Playgroud)

文档页面上,我看到:

针对NaN的测试

等式运算符(=====)不能用于测试值NaN.请isNaN改用.

有什么参考可以回答这个问题吗?这将是受欢迎的.

javascript nan

55
推荐指数
2
解决办法
2万
查看次数

Number.IsNaN()比isNaN()更破碎

Soooooo isNaN显然在JavaScript中被打破了,例如:

isNaN('')
isNaN('   ')
isNaN(true)
isNaN(false)
isNaN([0])
Run Code Online (Sandbox Code Playgroud)

回归假,当他们看起来都是......不是数字......

在ECMAScript 6中,草案包含一个新的,Number.isNaN但看起来像(imo)这也被打破了......

我期待

Number.isNaN('RAWRRR')
Run Code Online (Sandbox Code Playgroud)

要返回true,因为它是一个字符串,并且无法转换为数字...但是......

在此输入图像描述

似乎我会考虑的事情......不是数字,确实不是,不是数字......

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isfinite-number

MDN的例子说:

Number.isNaN( "布拉布拉"); //例如,isNaN就是这样

我不明白这是怎样的"原始全球isNaN的更强大的版本." 当我无法检查,看看事情是不是一个数字.

这意味着我们仍然需要进行实际的类型检查以及检查isNaN ...这看起来很傻......

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number

这里的ES3草案基本上说,一切都是假的,除了它的Number.NaN

有没有人发现这个坏了或者我只是不明白isNaN的意思?

javascript nan ecmascript-6

52
推荐指数
5
解决办法
2万
查看次数