double 的取值范围是 0.000~001 到 1000~00 ,有几个 0 取决于系统,现在需要判断这个 double 有几位,既
1000-> 3
1001-> 3
12002-> 4
0.01-> 2
0.007-> 3
我最初的打算通过对数,但发现存在问题
int main(){
double A = 0.001;
double B = 0.0001;
int A1 = static_cast<int>(::fabs(log10(A)));
int B1 = static_cast<int>(::fabs(log10(B)));
std::cout<<"A1: "<<A1<<std::endl;
std::cout<<"B1: "<<B1<<std::endl;
}
上面这段代码在 ubuntu20.04 上,使用 G++编译后运行,结果为
A1: 2
B1: 4
我在 win10 上使用 VS2019 编译,结果为 A1:3 B1 :4 。。。
所以我想问下有没有更好的办法来判断?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.