连接longs和float成长

时间:2013-12-06 01:20:45

标签: c floating-point arithmetic-expressions

我有两个号码:

1234567890< --- Long

0.123456< --- Float

有没有办法将这些组合起来以下列格式制作浮动(或双重):

(123)4567890.123456

我不介意括号中的数字是否必须删除。

3 个答案:

答案 0 :(得分:3)

鉴于long lfloat f,您可以使用:

double result = l % 10000000 + (double) f;

这通常会在小数部分失去一些准确性。

更新:从评论中,我们了解到这些值是一个时间,表示为秒数和几分之一秒,并且需要计算间隔。如果我们想要找到两次之间的差异,那么我们就可以通过这种方式从准确性和精确度来减少问题,从而计算差异:

double SubtractTimes(long l0, float f0, long l1, float f1)
{
    long ld = l1 - l0;
    double fd = (double) f1 - f0;
    return ld + fd;
}

注意:如果担心时间可能已经包含了一些上限,那么代码应该对此进行测试并进行调整。

答案 1 :(得分:0)

我一定错过了什么。这不容易吗?

long l = 1234567890;
float f = 0.123456;

float result = l + f;

答案 2 :(得分:0)

使用此:

double result = l + f;
printf("%.6f",result);