簡體   English   中英

XBase語言舍入怪異

[英]XBase Language Rounding Weirdness

我要求以XBase風格的語言(在這種情況下為FoxPro)獲取舊代碼,並將其轉換為C#.NET。 我想從重寫中獲得相同的輸出,但是四舍五入的差異使我發瘋。 我單獨嘗試了Decimal.Round(MidpointRounding)東西,但是發現我還需要為中點= 5種情況編寫自己的“舍入”函數。

如果可以的話,那會很好,但是我看到的是,在某些情況下需要我的“匯總”方法來與FoxPro的輸出保持一致,而在其他情況下卻確實會產生差異。 數據庫查詢正在做一些乘法和除法運算,我想知道兩個系統之間的數學差異是否正在累積。

這是我看來不一致的示例。 每對的初始值來自我的LINQ查詢的輸出。 鑒於這些,我想生成一個與所示的FoxPro結果相同的四舍五入結果:

.NET LINQ Query result: 7.0477049103806673503597572093.
FoxPro rounding: 7.0

.NET LINQ: 7.2499596595318807183725770943.
FoxPro rounding: 7.3

關於如何在不求助於完全笨拙的黑客的情況下,如何從舊系統中准確復制價值的任何建議?

您的問題可能與浮點精度有關。 在FoxPro程序回合之前,它將值存儲在哪種類型的變量中? 您使用什么類型?

如果FoxPro程序使用的浮點數的精度低於C#中的精度(反之亦然),則這可能是導致出現差異的原因。

暫無
暫無

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

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