我有个问题。我需要得到两个数字并将它们加在一起,其中一个是另一个的小数点。例如:
double number1 = 20;
double number2 = 142;
我需要将这些数字相加得到 20.142。有没有办法做到这一点?
谢谢
我有个问题。我需要得到两个数字并将它们加在一起,其中一个是另一个的小数点。例如:
double number1 = 20;
double number2 = 142;
我需要将这些数字相加得到 20.142。有没有办法做到这一点?
谢谢
简单的解决方案:
double result = [[NSString stringWithFormat:@"%i.%i", (int)number1, (int)number2] doubleValue];
你可以用数学。(顿顿顿顿!)
double number3 = number1 + (number2 / 1000);
所以问题就变成了;您如何确定除以第二个数字的 10 的幂?
肯定有很多方法可以做到这一点。就在我的脑海中,您可以运行一个循环,不断增加 10 的幂,直到它大于 number2 的当前值。
如果您正在处理 number1 的负数,那么您需要添加一个if语句来查看该数字是否 < 0。如果是这样,您需要减去而不是添加。
如果您正在处理 number2 的负数,那么……这很愚蠢。
一种天真的方式:
double res, number1 = 20, number2 = 142;
while (number2 >= 1) {
number2 /= 10;
}
res = number1 + number2;
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
,如果negative
是true
( YES
),则取反finalnum
。
该解决方案也可以使用以 10 为底的对数来确定除以的数量number2
,但这很可能需要更长的时间。
您也可以通过将这些数字转换为const char*
or CFString
(Objective-C) 字符串,然后将它们连接起来,然后将结果字符串解释为 adouble
来解决这个问题,但同样,这将花费更长的时间。
这段代码有两个注意事项:
number1
并且number2
必须是整数(如果number1
是,比如说,1.5
并且number2
是25.7
,finalnum
将会是1.757
)number2
必须是正面的