Я хочу получить integer part
из double
. Но этот способ не работает для меня:Существует ли элегантный способ конвертировать двойной в длинный?
double param, fractpart, intpart;
param = 3.14159265;
fractpart = modf (param , &intpart);
printf ("%f = %f + %f \n", param, intpart, fractpart);
Это связано с тем, что double integer
может иметь e-notation
. Например, 3.41e10
является правильным двойным номером.
Мои тестовые примеры есть:
- двойной -> долго долго
- 234343,0 -> 234343
- 3.41e10 -> 34100000000
- 19,999999999 -> 19
- -10,1 -> - 10
- -0.0000001 -> 0
Есть ли какой-то прекрасный способ выполнить мою задачу?
Вы говорите о преобразовании строк, содержащих числа с плавающей запятой, в 'long long' или фактические переменные' double'? – Columbo
@Columbo, На самом деле, у меня двойная переменная. Но, если вам нужно использовать double -> string -> long long, это тоже хорошо. – Denis
XY проблема? Зачем нужна электронная нотация? – cppguy