在C++中删除小数点后的一些数字

Emi*_*miX 2 c++

我需要删除小数点后的数字,但不是全部。

例如,double dig=3.1459038585 我需要将其转换为 dig=3.14

我想我需要多次 dig 到 100 然后将其转换为整数,然后再次转换为 double 并删除为 100 (所有这些都是 1 行)。但是有什么功能可以更快地做到这一点吗?

Nie*_*jes 9

任何实现此功能的函数都将更加灵活,因此根据定义会更慢。所以是的,就这样写:

double truncated = (double)((int)dig*100)/100;
Run Code Online (Sandbox Code Playgroud)

无论如何,这都是 CPU 本地操作,因此几乎不会花费任何时钟周期,尤其是内联或用作宏时。

  • 正确,但有一个小错误。它应该是 (double)((int)(dig*100))/100 - 注意 (int) 后面的括号。否则 dig 在相乘之前被转换(截断) (4认同)

Jes*_*ood 6

#include <cmath>
#include <iostream>
int main()
{
    double d = 3.1459038585;
    std::cout << std::floor(d * 100.) / 100. << std::endl; 
}
Run Code Online (Sandbox Code Playgroud)