|
1
13
你是在比较一个浮点数和一个双精度浮点数。文字
您将其存储在一个浮点中,它的精度可能比double低,因此
在这种情况下,
不过,在一般情况下,您可能希望使用epsilon来比较等式,如@duffymo所示。 |
|
|
3
2
不能比较浮点数的一个主要原因是,对于实数和整数有效的恒等式不一定适用于浮点数,因为四舍五入-即(x+y)+z和x+(y+z)通常是不同的(注意,这样写通常不会改变编译器的行为,但您可以通过执行编译器不会优化的操作来归纳顺序)。 例如,(100-(100-.0000000001))!=.00000000001使用IEEE-754双倍,即使数学上说它们应该相等。因此,应该产生.00000000001的计算将稍微偏离。这是一个特别复杂的计算问题,例如线性代数,其中的答案可以是成千上万的加法和减法的结果,每一个加法和减法都会增加浮点舍入误差。 IEEE-754浮点运算可能是非常棘手的,如果你真的不明白发生了什么。 我推荐优秀的“每个计算机科学家都应该知道的浮点运算”: http://docs.sun.com/source/806-3568/ncg_goldberg.html |
|
|
4
2
假设采用IEEE-754表示,文字1.7f和1.7代表以下值:
|
|
|
5
1
浮动me=1.7f; |
|
|
6
0
这是一个代表性问题
|
|
|
7
0
|
|
|
Leo · 为什么carg(-0)返回-pi? 1 年前 |
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 2 年前 |
|
|
Alexander · 为什么数字的输出不同? 2 年前 |
|
Ronny · 如何防止程序返回“inf”? 2 年前 |
|
|
EMS · 为什么双重打印的值与C中的浮点值相同,而它们的大小不同? 2 年前 |
|
|
Dakolas · 对python十进制库感到困惑 2 年前 |
|
|
RTC222 · 无法获取vrndscalepd的正确舍入模式代码 2 年前 |