【发布时间】:2021-02-10 07:48:01
【问题描述】:
我正在尝试获取一个 Long Long Int 并将每个位置编号拆分到数组中它自己的位置,当然,array[0] 是最大的数字。
例如,如果数字是 314,那么 array[0] = 3,array[1] =1,array[2] = 4。
这是一个微控制器计算器项目的一部分,我正在编写图形库(为了好玩)并使用数组来显示每一行。
问题是,它需要能够处理非常大的数字(9,999,999,999+),而且我正在处理大数据。如果 Long Long
例如,1,234,567,890 显示为 1,234,567,966。
这是我正在使用的代码的 sn-p:
long long int number = 1234567890;
int answerArray[10];
int numberLength = 10;
for(writeNumber = 0; writeNumber < numberLength; writeNumber++)
{
answerArray[writeNumber] = ((int)(number / pow(10, (numberLength - 1 - writeNumber))) % 10;
}
我很确定这与“%”和多种数据类型有关,因为 Int 范围内的任何数字都可以完美运行。
你能看出我哪里出错了吗?有没有更好的方法来实现我的目标?大数有什么技巧吗?
【问题讨论】:
-
pow用于浮点取幂;long long参数会丢失精度,并且浮点不是您想在微控制器上使用的东西。通常你会重写它以连续除以 10 并取模。 -
@NateEldredge 太棒了,我不知道,所以你认为一次只做 10 个?
-
是的,如果从右到左填充数组会更容易。