簡體   English   中英

浮點乘以零是否保證產生零?

[英]Is floating point multiplication by zero guaranteed to produce zero?

我知道浮點數有舍入錯誤,但我想知道是否存在某些錯誤不適用的情況,例如乘以零。

對於所有浮點,任何數字的零次是否為零?

假:

0f * NAN == NAN
0f * INFINITY == NAN

和......

0f * -1f == -0f (negative 0f), with 0f == -0f :-)

(在Intel,VC ++上,可能在任何使用IEEE 754-1985浮點的平台上)

關於ideone的示例(可能在某些Intel兼容平台上使用GCC)

除了@xanatos的好答案之外, 還要考慮OP的一些中間問題:

我想知道是否存在(舍入)錯誤不適用的某些情況

候選人包括some_double_y = some_double_x * 1.0some_double_y = some_double_x + 0.0可能永遠不會產生舍入錯誤。

然而,即使是那些也是可疑的,因為編譯器可能會以更高的精度評估double ,考慮到FLT_EVAL_METHOD == 2 ,其中“評估所有操作和常量到long double類型的范圍和精度”。 在這種情況下,中間some_double_x可以作為與表觀double some_double_x0.01.0不同的long double some_double_x存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM