将数字添加到小数点的末尾(Objective-c)

时间:2012-04-29 00:22:23

标签: objective-c

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

double number1 = 20;
double number2 = 142;

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

由于

4 个答案:

答案 0 :(得分:5)

简单的解决方案:

double result = [[NSString stringWithFormat:@"%i.%i", (int)number1, (int)number2] doubleValue];

答案 1 :(得分:4)

你可以使用数学。(Dun dun DUNNNNNNN!)

double number3 = number1 + (number2 / 1000);

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

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

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

如果你正在处理number2的负数,那么......那真是太傻了。

答案 2 :(得分:2)

一种天真的方式:

double res, number1 = 20, number2 = 142;
while (number2 >= 1) {
    number2 /= 10;
}
res = number1 + number2;

答案 3 :(得分:-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中,如果negativetrueYES),则取消finalnum

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

您也可以通过turning those numbers into const char* or CFString (Objective-C) strings and then concatenate them followed by an interpretation of the resulting string as a double解决此问题,但同样需要更长的时间。

此代码有两点需要注意:

  1. number1number2必须是整数(如果number11.5number225.7,{{1}将是finalnum
  2. 1.757必须是正面的