gpt4 book ai didi

c++ - 是否存在将 double 转换为 long long 的优雅方法?

转载 作者:行者123 更新时间:2023-11-30 02:42:48 29 4
gpt4 key购买 nike

我想获取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

有什么漂亮的方法可以完成我的任务吗?

最佳答案

通过隐式转换截断结果应该:

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

Demo .

关于c++ - 是否存在将 double 转换为 long long 的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745895/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com