http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
如果创建一个自定义算法来确定是否可以将两个浮点数视为相等,则必须使用大于Epsilon常量的值来确定两个值相等的可接受的绝对差值.(通常,差异幅度比Epsilon大很多倍.)
那么这不是真正可以用于比较的ε吗?我真的不明白MSDN的措辞.
它可以在这里的示例中用作epsilon吗?- 浮动和双重比较最有效的方法是什么?
最后这看起来非常重要,所以我想确保我有一个可靠的实现平等,大于,小于,小于或等于,大于或等于.
我有一个double价值f,并想要一个稍微大一点(或更小)的方法来获得一个新的值,该值尽可能接近原始值但仍严格大于(或小于)原始值.
它不必靠近最后一位 - 更重要的是,我所做的任何改变都能保证产生不同的值,而不是回到原始值.
假设我有一个浮点数X.我想找到小于X的最大数字,并且可以无损地存储在浮点数中.
IIRC IEEE标准说你可以通过将float的位转换为int表示,减去1,然后转换回float来实现.
(编辑:对于不是NaN或inf的正数,这是正确的.对于负数,您必须添加.有关更多信息,请参阅Rawling的答案.)
要在表示之间进行更改,我只知道C#的(强制转换)运算符,它会截断.那不是我想要的.
有没有办法在C#中做到这一点?