【发布时间】:2014-11-04 22:02:40
【问题描述】:
我想得到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 是正确的双数。
我的测试用例是:
- double -> long long
- 234343.0 -> 234343
- 3.41e10 -> 34100000000
- 19.999999999 -> 19
- -10.1 -> -10
- -0.0000001 -> 0
有什么漂亮的方法可以完成我的任务吗?
【问题讨论】:
-
您是说将包含浮点数的字符串转换为
long long或实际的double变量吗? -
@Columbo,实际上,我有双变量。但是,如果你需要转换 double -> string -> long long,那也很好。
-
XY 问题?为什么电子符号很重要?
-
@cppguy,可能是 XY 问题。我的主要任务是将双变量转换为整数数组(该数组用于存储大数)。
标签: c++ c++11 casting double long-long