2

我有个问题。我需要得到两个数字并将它们加在一起,其中一个是另一个的小数点。例如:

double number1 = 20;
double number2 = 142;

我需要将这些数字相加得到 20.142。有没有办法做到这一点?

谢谢

4

4 回答 4

5

简单的解决方案:

double result = [[NSString stringWithFormat:@"%i.%i", (int)number1, (int)number2] doubleValue];
于 2012-04-29T01:00:14.000 回答
4

你可以用数学。(顿顿顿顿!)

double number3 = number1 + (number2 / 1000);

所以问题就变成了;您如何确定除以第二个数字的 10 的幂?

肯定有很多方法可以做到这一点。就在我的脑海中,您可以运行一个循环,不断增加 10 的幂,直到它大于 number2 的当前值。

如果您正在处理 number1 的负数,那么您需要添加一个if语句来查看该数字是否 < 0。如果是这样,您需要减去而不是添加。

如果您正在处理 number2 的负数,那么……这很愚蠢。

于 2012-04-29T00:26:24.620 回答
2

一种天真的方式:

double res, number1 = 20, number2 = 142;
while (number2 >= 1) {
    number2 /= 10;
}
res = number1 + number2;
于 2012-04-29T00:25:53.317 回答
-1
bool negative = (number1 < 0.0);

if (negative)
    number1 = 0 - number1;
while (number2 >= 1.0)
    number2 = number2 / 10.0;

double finalnum = number1 + number2;
if (negative)
    finalnum = 0 - finalnum;

这很简单。我们首先确定是否number1为负,如果是,则使其为正并设置一个布尔标志。然后我们继续除以number2直到10.0它小于1.0(这意味着它现在在[0, 1)假设它是正的范围内)。然后我们只需将两个数字相加并存储在 中finalnum,如果negativetrue( YES),则取反finalnum

该解决方案也可以使用以 10 为底的对数来确定除以的数量number2,但这很可能需要更长的时间。

您也可以通过将这些数字转换为const char*or CFString(Objective-C) 字符串,然后将它们连接起来,然后将结果字符串解释为 adouble来解决这个问题,但同样,这将花费更长的时间。

这段代码有两个注意事项:

  1. number1并且number2必须是整数(如果number1是,比如说,1.5并且number225.7finalnum将会是1.757
  2. number2必须是正面的
于 2012-04-29T00:26:11.290 回答