я хочу получить 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
правильный двойной номер.
Мои тестовые случаи:
Есть ли какой-нибудь красивый способ выполнить мою задачу?
Усечение вашего результата путем неявного преобразования должно сделать:
std::cout << (long long)234343.0 << '\n'
<< (long long)3.41e10 << '\n'
<< (long long)19.999999999 << '\n'
<< (long long)-10.1 << '\n'
<< (long long)-0.0000001 << '\n';
Должен на вашей машине выводить
234343
34100000000
19
-10
0