2017-04-02 46 views
0

你好,我想計算一個數字中的數字我的意思是如果我有這個雙重78.23這個函數將返回4,如果我有145.123我會得到6.是否有可能做到這一點用C++? 謝謝!計算一個數字的長度

+4

如果您特別使用雙打,您將遇到數字無法在基數2中直接表示的問題。基數10中的示例爲1/3 - 此數字的長度是多少? – Shaggi

回答

0

這樣做的簡單的方法是隻需輸入號碼爲一個字符串,如果你需要它嚴格地與整數使用。長度()

#include <iostream> 
#include <string> 
#include <conio.h> 
using namespace std; int main() { 

string number; 

cout << "Enter a number: "; 
cin >> number; 

cout << "length is " << number.length(); 

_getch(); 
return 0; 

,然後加倍,你必須創建一個數學算法。

+0

如果它是雙重的呢?它也會計算點數...... – 0xDEFACED

1

精度 - 就您所問的而言 - 與輸出值一樣,也是輸出流的屬性。假設您使用C++ ostreamofstream,ostrstream等)進行輸出,請查找屬性ios_base::precision,ios_base::width等或流操作程序,如setprecision。如果您正在使用C I/O(sprintf()等),則答案取決於爲%f格式指定的修飾符。

因此,獲得您所尋求的值的方法可能是使用您選擇的方法(流操縱器,格式說明符)將值輸出到字符串。然後計算字符串的長度,爲每個尾部減去一個0,小數點等。

此外,具有基數爲2的尾數(其中包括大多數現實世界中的浮點表示)的浮點變量不能準確地表示任何值不是0.5的整數冪的和(存儲值是近似值)。除此之外,這意味着浮點變量不能準確表示像0.10.01這樣的值。您的示例值78.23145.123不能完全使用浮點變量表示。這就是爲什麼像你這樣的問題的答案取決於變量是如何輸出的原因的一部分,就像值本身一樣。