为什么NaN值的比较与所有其他值的行为不同?也就是说,与运算符==,<=,> =,<,>的所有比较(其中一个或两个值为NaN)返回false,这与所有其他值的行为相反.
我想这可以通过某种方式简化数值计算,但我找不到明确说明的理由,甚至在Kahan 的IEEE 754状态讲义中也没有详细讨论其他设计决策.
这种异常行为在进行简单数据处理时会造成麻烦.例如,当在C程序中对某些实值字段的记录列表进行排序时,我需要编写额外的代码来处理NaN作为最大元素,否则排序算法可能会变得混乱.
编辑: 迄今为止的答案都认为比较NaNs毫无意义.
我同意,但这并不意味着正确的答案是错误的,而是一个非布尔值(NaB),幸运的是它不存在.
因此,在我看来,选择返回真或假的比较是任意的,对于一般数据处理,如果它遵循通常的定律(==的反射性,<= =,>的三分法),那将是有利的,以免数据结构依赖这些法律变得困惑.
因此,我要求打破这些法律的一些具体优势,而不仅仅是哲学推理.
编辑2: 我想我现在理解为什么使NaN最大化是一个坏主意,它会搞砸上限的计算.
可能需要NaN!= NaN以避免检测环路中的收敛,例如
while (x != oldX) {
oldX = x;
x = better_approximation(x);
}
Run Code Online (Sandbox Code Playgroud)
然而,最好通过比较绝对差异与小限制来编写.所以恕我直言,这是打破NaN反身性的一个相对弱的论据.
我想创建一个数据库,其中每个表的 PK 都是 GUID,并且在整个数据库中是唯一的,
示例:我的数据库名称是“LOCATION”。我有 3 个表,分别是“城市”、“州”和“国家”。
我希望所有 3 个表都具有与 GUID 相同的 PK 字段,并且该值在数据库中是唯一的。
如何在 SQL Server 中执行此操作,有什么想法吗?我以前从未使用过 SQL Server,因此如果简要解释一下将会很有帮助。
该PEP 8建议模块在节目开始进口.
现在,我觉得在主程序开始时(即之后if __name__ == '__main__')导入其中一些是有道理的.例如,如果主程序从命令行读取参数,我倾向于import sys在主程序的开头执行:这样,sys当代码用作模块时不必导入,因为没有必要,在这种情况下,用于命令行参数访问.
这对PEP 8的侵权有多严重?我应该避免这样做吗?或者修改PEP 8是否合理?
我有一些代码,我经常复制一大块内存,通常只需要对它进行非常小的更改.
我已经实现了一个跟踪更改的系统,但我认为如果可能的话,可以告诉操作系统对内存进行"写时复制",并让它只处理那些部分的副本哪个改变了.然而,虽然Linux执行copy-on-write,例如fork()时,我找不到一种控制它并自己动手的方法.
我是Perforce的新手.
您会在视图/分支方面考虑P4最佳实践.
你会创建一个可以访问许多分支的视图,还是会创建一个视图/分支?
我不确定Perforce中的视图/劣化空间之间的切换是否容易.
谢谢,
托马斯
我有以下代码:
var inp = $("#txt");
if(inp.val() != "")
// do something
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以使用变量'inp'检查空文本框
保存aspx页面的属性值的最佳做法是什么?
我做了以下,是否有一些更整洁的方式?
public string DataTable
{
get
{
return _DataTable;
}
set
{
_DataTable = value;
ViewState["DataTable"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable = Request["dataTable"].ToString();
}
else
{
DataTable = ViewState["DataTable"].ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种操作类似Arrays.equals(a1, a2)但忽略元素顺序的方法.我无法在Google Collections中找到它(类似的东西Iterables.elementsEqual(),但确实考虑到了排序)和JUnit(assertEquals()显然只是调用equals()Collection,这取决于Collection实现,而这不是我想要的)它会如果这样的方法会采用Iterables,那就最好了,但是我也可以简单地使用Collections这样的方法当然会考虑集合中的任何重复元素(所以它不能简单地测试containsAll()).
请注意,我不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它.
如何确定需要同步的Java代码的一部分?有没有单元测试技术?
欢迎使用代码示例.
我正在使用Spring 3并且不推荐使用SimpleFormController.听起来我们应该使用像@Controller这样的注释.好的,但是如何在我的控制器中管理我的表单的验证器?
谢谢
java ×2
asp.net ×1
branch ×1
c ×1
collections ×1
comparison ×1
concurrency ×1
equals ×1
guid ×1
iec10967 ×1
ieee-754 ×1
import ×1
jquery ×1
linux ×1
nan ×1
pep ×1
pep8 ×1
perforce ×1
primary-key ×1
python ×1
spring ×1
spring-mvc ×1
sql-server ×1