我想得到double
的integer part
。但这种方式对我不起作用:
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
有什么漂亮的方法来完成我的任务吗?
通过隐式转换截断结果应该可以:
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
演示。