C++计算double的位数

Dch*_*ris 2 c++ double digits

我想做标题这样说的:

int number1;
cin>>number1;
num1len=log10(number1)+1;
cout<<"num of digits is "<<num1len<<"\n";
Run Code Online (Sandbox Code Playgroud)

但当数字位数为11时,答案总是如此 7(6+1)

有谁知道为什么或我做错了什么?

Ben*_*igt 8

浮点数据类型,包括double存储近似值.你通过调用找到的log10小数点左边的位置数,受近似过程的影响最多.

你问的问题,如何找到存储在二进制浮点数中的数字中的小数位数是没有意义的.该数字7.1有两个十进制数字,但其近似浮点表示根本不使用十进制数字.要保留十进制数字的数量,您需要一些十进制表示,而不是C++ double数据类型.

当然double,根据问题标题,所有这些仅适用于.您的代码段实际上并未使用double.