您好我想计算一个数字中的数字我的意思是如果我有这个双78.23函数将返回4如果我有145.123我会得到6.是否可以用C ++做到这一点? 谢谢!
答案 0 :(得分:1)
精确 - 就你所问的意义而言 - 与输出值一样,也是输出流的属性。假设您使用C ++ ostream
(ofstream
,ostrstream
等)输出,请查找属性ios_base::precision
,ios_base::width
等,或像{{一样流操作符1}}。如果您使用的是C I / O(setprecision
等),则答案取决于为sprintf()
格式指定的修饰符。
因此获取所寻找值的方法可能是使用您选择的方法(流操作符,格式说明符)将值输出到字符串。然后计算字符串的长度,每个尾随%f
减去一个,小数点等。
此外,具有基数2尾数(包括大多数现实世界浮点表示)的浮点变量不能精确地表示任何不是0
的整数幂之和的值(存储值是近似值) )。除此之外,这意味着浮点变量无法准确表示0.5
和0.1
等值。您无法使用浮点变量精确表示样本值0.01
和78.23
。这就是为什么像你这样的问题的答案取决于变量的输出方式,以及价值本身的部分原因。
答案 1 :(得分:0)
这样做的简单方法是只输入数字作为字符串并使用.length()
#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;
如果你需要严格要求整数和双精度,那么你必须创建一个数学算法。