所以我有一个关于添加数字的所有数字的任务。例如,如果数字是2367,则添加2 + 3 + 6 + 7。
然而,问题是数字很大(2 ^ 325),大约是106位数。我试过使用double或float但问题是这个数字在10位左右之后只显示为0到精确。
我遇到的另一个问题是,我不知道是否应该将数字转换为字符串或数组,然后将字符串或数组的所有位置相加(如数组[1] + array [2] + ... array [n])。
如果我更正,我怎样才能将数字转换为数组/字符串?
谢谢!我只学习了C,所以我甚至不确定如何在C ++中改变它
初学者程序员:(
再次感谢!
答案 0 :(得分:2)
最简单的解决方案是将您的号码保留为std::string
。可以像数组一样访问std::string
。
要将数字字符(例如“3”)转换为数字,请从中减去字符“0”。
例如:
unsigned int value_of_3 = '3' - '0';
要添加所有数字,请逐个字符循环字符串。对于每个数字字符,减去'0',然后将结果添加到sum变量。
编辑1:
说明性图纸。
给定数字2367作为字符串“2367”,你有数组:
+-----+-----+-----+-----+
| '2' | '3' | '6' | '7' |
+-----+-----+-----+-----+
让字符串命名为digit_string
值digit_string[1]
的值为'3',如上图所示。
获取第二个插槽的数值:
unsigned numeric_value = digit_string[1] - '0';
这会产生numeric_value == 3;
。
答案 1 :(得分:0)
这是标题问题的答案,而不是说明中的后续问题。将数字转换为字符串的简单方法是将值输出到流并检索流的字符串内容。
int streetNumber = 2500;
string streetNumberStr;
ostringstream os;
os << streetNumber;
streetNumberStr = os.str();