我正在寫一個C#庫進行區間算術,爲此我需要 將浮點運算舍入模式設置爲Up和Down。我知道在C++ 它可以通過fesetround()函數來實現。在C#中是否有等價物, 或者如果沒有,我如何才能以其他方式實現此目的?有沒有C++等價的C++ fesetround()函數?
回答
Math.Ceiling(num) // Rounds up
Math.Floor(num) // Rounds down
它會工作,如果我想要實現的是設置舍入一次。 Round/Ceil將不起作用。它會圍繞操作的結果。不是浮點單位內的計算。 – Buyuk
這些函數與FPU舍入模式無關。 –
我不明白最後票數。 Floor和Ceil產生整數結果,並且與舍入模式無關,該舍入模式處理在FP操作之後四捨五入時如何處理最低位(有時也是高位)。 –
我遵循Pascal Cuoq的建議,並創建了一個非常簡單的 - 一個功能組件。 如果有其他人會遇到這樣的問題,我將它發佈在這裏。
解決方案使用我的lib:
- 下載DLL文件來自:https://www.dropbox.com/s/o3vfxe4rpefhly7/RoundModeUtil.dll
- 添加引用到項目庫中。
- 包括使用RoundModeUtils;項目代碼中的行。
用法:
static void RoundModeConfig::setround(int mode); // mode can be set to one of the following values: static int RoundModeConfig::UPWARD static int RoundModeConfig::DOWNWARD static int RoundModeConfig::DEFAULT // To nearest mode. static int RoundModeConfig::TOWARDZERO
感謝漢斯帕桑特你的建議,我應該記住它。 感謝大家的幫助,希望有人會發現我的DLL有用:)
你還有這個DLL嗎?目前正在研究同一個項目。 – selmaohneh
- 1. 有沒有一個C++等價的WaitforSingleObject?
- 2. Python中的C的strnset()有沒有等價的函數?
- 3. 有沒有C#等價於Java的AbstractList?
- 4. 有沒有C#等價於Ruby的`respond_to?`?
- 5. C#:有沒有JTable的等價物?
- 6. 有沒有C++的Cocoa等價物?
- 7. 有沒有C#等價於PHP函數`parse_str`?
- 8. 有沒有C#等價於IsDebuggerPresent()?
- 9. MATLAB中有稀疏的任何C++/C等價函數
- 10. 等價的C#函數Excels Norm.S.Inv函數
- 11. C中的數組有沒有indexOf等價物?
- 12. 有沒有C++等價於PHP的var_dump和死亡?
- 13. 是否有C#等價於PHP的array_key_exists?
- 14. 在PHP的explode()函數的C++中是否有等價物?
- 15. Delphi有沒有和C的volatile變量等價的東西?
- 16. C++中的fprint的等價函數
- 17. Java中C的「_getch()」的等價函數?
- 18. 是否有C#等價於VB6的Choose()函數?
- 19. C++中是否有等價的readline()。split()python函數?
- 20. 有沒有這個函數的數學等價物?
- 21. 沒有C++ 0x的C++ lambda函數?
- 22. 沒有析構函數的C++函數
- 23. Go有沒有和Java的String intern函數等價的東西?
- 24. C#TryParse有沒有提升lexical_cast等價物?
- 25. 沒有匹配函數C++
- 26. 有一個C#等價的Java的ConcurrentHashMap
- 27. 有沒有像getdelim是C++的函數?
- 28. 有沒有Linux的SetWindowPos等價物?
- 29. 在R中有沒有python等價的get_map函數?
- 30. 等價於C++中的C++
我想可以很容易地從C#調用C代碼。您可以簡單地調用一個C存根,從您的C#庫中設置FPU舍入模式。四捨五入模式在處理器中設置,並且會影響CPU從該點開始執行的所有浮點計算。 –
它需要將C++代碼編譯爲一個dll文件,然後將其鏈接到我的C#程序? – Buyuk
千萬不要修改C#中的FPU控制字。這是你可以想象的最糟糕的全球變量。隨着全局性標準的痛苦,你的改變不會持續下去,並會隨意消失。 CLR中的內部異常處理代碼在處理異常時將其重置。 –