Конкатенация длинных и плавает в длинных

У меня есть два номера:

1234567890 <--- Длинный

а также

0.123456 <--- Float

Есть ли способ объединить их, чтобы сделать float(или double) в следующем формате:

(123) +4567890,123456

Я не против, если цифры в скобках должны быть удалены.

3 ответа

Решение

Учитывая longl и floatf, ты можешь использовать:

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;
}

Примечание. Если существует опасение, что время может превысить какой-то верхний предел, код должен проверить это и внести коррективы.

Использовать этот:

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

Я должен что-то упустить. Разве это не так просто, как это?

long l = 1234567890;
float f = 0.123456;

float result = l + f;
Другие вопросы по тегам