我們有一個學校的作業,我們被告知所有的數字在 的第三個十進制數字之後結束,這意味着在我們的例子中0.0009是0。 我如何在C++中做到這一點? 我應該使用運算符重載創建一個新類嗎? 謝謝只使用前3個十進制數字進行計算,如何? (C++)
回答
我應該使用運算符重載創建一個新的類嗎?
這將有助於使使用該類的代碼變得簡單。您要決定是否要努力獲得這種簡單性。
我該怎麼在C++中做到這一點?
在C++中,有一種方法可以將浮點數截斷爲小數點後的零位:一個強制轉換。
double d1 = 1.34;
double d2 = (int)i; // now d2 is 1
你可以用一些數學運算來截斷小數點後三位。
你應該能夠把你的號碼,乘以1000,執行你的算術運算,然後除以1000.0得到你的結果。
((int)(0.0009 * 1000))/1000.0 == 0.0
這很好,所有的,但通常避免只是給標籤[標籤:家庭作業]問題提供解決方案,而只是指導提問者尋求解決方案。 –
雖然這有時會出錯,因爲例如'0.001 * 1000'可能略小於1。 –
您可以選擇使用整數。取0.0009 * 1000 = 0.9,只使用整數部分,iow 0.最後,您可以選擇將最終答案除以1000?
對於印刷,我不認爲需要新課,你可以將它們四捨五入。使用printf(「%。3f」,);
看到這個:Rounding Number to 2 Decimal Places in C
爲了在計算中使用,請參閱本:http://www.daniweb.com/software-development/cpp/threads/184830
對於一些計算,不作類 - 它將使代碼更難理解(你做的任何時間運營商超載你必須考慮到未來的用戶由於意外行爲而犯錯誤)。話雖如此,你也許能夠擺脫一個非常簡單的類,它只包含一個「雙精度型」和「雙精度型」運算符以及一個構造函數。這是完全可以接受的。
#include <cmath>
class Threep
{
double val;
public:
Threep(double x) : val(floor(x*1000)/1000) {}
operator double() { return val; }
double operator=(double rhs) { val = floor(rhs*1000)/1000; return val;}
double operator*=(double rhs) { val = floor((val*rhs)*1000)/1000; return val;}
double operator/=(double rhs) { val = floor((val/rhs)*1000)/1000; return val;}
double operator+=(double rhs) { val = floor((val+rhs)*1000)/1000; return val;}
double operator-=(double rhs) { val = floor((val-rhs)*1000)/1000; return val;}
};
我加了一些方便的分配與運營商一起= :-)
此代碼是未經測試,但它看起來不錯,我的眼睛。
- 1. 如何從長十進制數中只取前3個數字
- 2. 使用十進制數字段計算
- 3. 如何用十進制數字來計算? (C#)
- 4. 如何用awk對十六進制數進行計算?
- 5. 如何使用PHP計算十進制數字的位數
- 6. 如何計算2的十進制或十六進制數的讚美?
- 7. 請與十六進制/十進制數計算
- 8. C++十六進制計算器乘法
- 9. 如何計算十六進制乘法?
- 10. 在C中計算(複雜)十進制數字數組#
- 11. PHP十進制計算
- 12. 如何根據位數計算精度的十進制數字?
- 13. 如何讓我的javascript計算器計算十進制數?
- 14. 如何只獲得二進制文件的前十個字節
- 15. 如何將數字(十進制)轉換爲二進制(二進制)數字和從二進制到十進制?
- 16. 如何在Python中使用十進制值進行模運算?
- 17. 如何將十進制整數轉換爲單個十六進制字符? (C)
- 18. 使用Python 3的十進制模塊計算第n根
- 19. 如何讓C-x C-e只顯示十進制和十六進制?
- 20. 的Javascript數學與十進制計算
- 21. 使用十進制或十六進制
- 22. 十進制數只使用jQuery
- 23. 如何讀取二進制計算器c的單個數字?
- 24. 將用戶的十進制輸入與c#十進制數進行比較
- 25. 如何轉換OCaml中十六進制,十進制,十進制和二進制數之間的數字?
- 26. 從C#中的十六進制/二進制字符串計算SHA1
- 27. 數學計算十進制到二進制(JAVA)
- 28. 字符串的十進制數用C
- 29. 如何使用十進制?
- 30. 如何將字母轉換爲數字,同時將十六進制基數轉換爲十進制python 3?
你的意思是計算或顯示? – birryree
四捨五入麼?你爲什麼不把0.0009變成0.001? –
想想你是否可以在輸入數字時操作數字。你當然不想重寫'float'類,因爲那樣你就不得不重新實現所有的數學運算符。 – Chris