Конкатенация длинных и плавает в длинных
У меня есть два номера:
1234567890 <--- Длинный
а также
0.123456 <--- Float
Есть ли способ объединить их, чтобы сделать float(или double) в следующем формате:
(123) +4567890,123456
Я не против, если цифры в скобках должны быть удалены.
3 ответа
Учитывая long
l
и float
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;
}
Примечание. Если существует опасение, что время может превысить какой-то верхний предел, код должен проверить это и внести коррективы.
Использовать этот:
double result = l + f;
printf("%.6f",result);
Я должен что-то упустить. Разве это не так просто, как это?
long l = 1234567890;
float f = 0.123456;
float result = l + f;