以下是我定義相同值的兩種不同方式。我希望它存在一個64位(雙精度)浮點數(又名雙精度)。#定義雙 - 不同的價值?
#define THISVALUE -0.148759f
double myDouble = -0.148759;
如果我執行以下操作
double tryingIt = THISVALUE;
,我看值調試過程中或打印出來,我可以看到它分配給tryingIt
-0.14875899255275726
我明白浮點數並不準確,但這只是一個真正拋出我的數學的瘋狂差異。在調試器中直接指定double作爲頂級代碼塊給出的值爲-0.14875900000000000 - 正是它應該是的。
有什麼想法?
大多數情況下,單精度文字「f」會導致您所看到的差異。 「-0.148759」是雙精度,「-0.148759f」是單精度。 – sgarizvi
這是C還是C++? C/C++不存在。如果這是C,'#define'是(de)很好。如果不是,那麼有更好的選擇。 – JorenHeit