gpt4 book ai didi

c++ - 如何计算整数的十进制数字?

转载 作者:行者123 更新时间:2023-12-02 10:02:19 27 4
gpt4 key购买 nike

我写了一个程序来确定数字中的位数

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
long long num1 = 1999999999999999;
long long num2 = 9999999999999999;
int number_of_digit_1 = log10(num1) + 1;
int number_of_digit_2 = log10(num2) + 1;
cout << number_of_digit_1 << endl;
cout << number_of_digit_2 << endl;
}

输出是这个
16 
17

即使应该打印相同的数字(16)。为什么会这样?

最佳答案

log10 将各种浮点类型用作参数,并在其结果中返回相同的类型。在您的情况下,它将转换为double
double的整数(有效位数)部分只有53位。
9999999999999999需要54位才能准确表示。

当您将9999999999999999转换为double时,您会得到10000000000000000,因此可以预期16中的log10(9999999999999999)结果。

为了获得准确(可能更快)的整数位数,您应该使用整数方法来计算位数。有多种技术,例如What is the fastest method of calculating integer Log10 for 64-bit integers on modern x86-64?http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog

关于c++ - 如何计算整数的十进制数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62016982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com