C++從零開始
回答
inline double myround(double x)
{
return x < 0 ? floor(x) : ceil(x);
}
如the article Huppie cites提到的,這是最好的表現爲跨所有浮點類型作品的模板
見http://en.cppreference.com/w/cpp/numeric/math/floor和http://en.cppreference.com/w/cpp/numeric/math/floor
,或者由於大同,非功能版本:
x = (x < 0) ? floor(x) : ceil(x);
關於CPlusPlus.com上的類似問題有一篇不錯的文章。最簡單的解決問題的方法應該是這樣的:
double customRound(double value) const {
return value < 0 ? floor(value) : ceil(value);
}
更好的解決辦法是在文章中提到的,它使用一個模板:
//--------------------------------------------------------------------------
// symmetric round up
// Bias: away from zero
template <typename FloatType>
FloatType ceil0(const FloatType& value)
{
FloatType result = std::ceil(std::fabs(value));
return (value < 0.0) ? -result : result;
}
爲什麼不稱爲customFloor - 它既不是:P – 2009-08-25 07:22:35
我在引用的文章中看到它的內容爲 template
有趣的文章,+1 –
2009-08-25 07:24:56
@Ruben Bartelink:'Round'應該更好:)... btw ..你有一些忍者打字技巧;-) – Huppie 2009-08-25 07:25:05
- 1. 從零開始
- 2. MVC從零開始
- 3. RDF從零開始
- 4. 從零開始的Lua/C++綁定
- 5. DJVU閱讀器從零開始。 C#
- 6. 從零開始編程ARM C in
- 7. 從零開始學習YUI
- 8. 主從零開始查看
- 9. 從零開始學習PTX
- 10. 從零開始計數
- 11. UIScrollView和CATiledLayer從零開始
- 12. nvd3 multichart yaxis從零開始
- 13. 從零開始實現樹
- 14. double:從零開始的roundaway
- 15. 從零開始的Modx idx
- 16. 建設從零開始
- 17. Java PRNG從零開始
- 18. rowindex始終從零開始......爲什麼?
- 19. iPhone開發環境(從零開始)
- 20. 開始從C#
- 21. 以零開始AUTO_INCREMENT
- 22. 開始,並從C#
- 23. 從C#開始CAD#
- 24. JavaScript告訴視頻從一秒開始而不是零開始
- 25. NSWindow在清醒後從零開始
- 26. 從零開始構建dicom解析器
- 27. Rails:從零開始的令牌認證
- 28. 從零開始實施Redux商店
- 29. VB6:從零開始創建IHTMLElementCollection
- 30. 如何從零計數器verilog開始
從(原來的)標題爲「C++雙四捨五入「,我以爲你的意思是四捨五入數字,只是爲了確保:-) – paxdiablo 2009-08-25 07:26:35
你是對的:D thx編輯它 – Emre 2009-08-25 07:39:46