我的代碼,簡單的幾行:演員到雙忽略小數點
var
vRecordValue:Double;
begin
vRecordValue:= someVariant;
凡someVariant是一個字符串(類型256)。
在生產系統上,我們有'23.4'的變體,vRecordValue變成了234.我只能重現這是我的系統分隔符是','。在我們的生產系統中,情況就是這樣,但我們已經改變了設置並仍然看到了這種情況。有趣的是,除了在調試模式下(不知道這裏的關係是什麼),並且通過一個簡單的測試,我們無法重現這一點。
我有一個明確的轉換解決了這個問題:
vRecordValue:= StrToFloatDef(VarToStrDef(someVariant, '0'), 0);
問題:
- 是否有任何其他的方式,一個小數點可以被忽略?
- 有人可以請提供一個參考,瞭解如何執行從字符串到雙精度的默認投射?我想了解其中的差異。
- 有沒有什麼辦法可以讓默認轉換中使用的分隔符從代碼第一次運行時的值中緩存? ......令人懷疑但絕望的理解。
感謝,
韋恩。
你有沒有檢查你的區域設置?在這種情況下,我不會依賴特定的語言環境設置,而是使用固定的(英語)語言環境來執行此類任務似乎很合適 - – JensG 2015-03-31 08:07:28
謝謝。抱歉。我應該更清楚。當我說分隔符是逗號時,這是來自語言環境設置。我們的生產體系在阿爾巴尼亞,這就是爲什麼我們認爲我們遇到了這個問題。 – wayju 2015-03-31 09:38:01
你究竟在做什麼? – 2015-03-31 19:45:50