我需要删除小数点后的数字,但不是全部。
例如,double dig=3.1459038585 我需要将其转换为 dig=3.14
我想我需要多次挖掘到 100,然后将其转换为整数,然后再次转换为双精度并删除到 100(所有这将是 1 行)。但是有什么功能可以更快地做到这一点吗?
我需要删除小数点后的数字,但不是全部。
例如,double dig=3.1459038585 我需要将其转换为 dig=3.14
我想我需要多次挖掘到 100,然后将其转换为整数,然后再次转换为双精度并删除到 100(所有这将是 1 行)。但是有什么功能可以更快地做到这一点吗?
任何实现此功能的函数都将更加灵活,因此按照定义会更慢。所以是的,只要写这个:
double truncated = (double)((int)dig*100)/100;
无论如何,这都是 CPU 原生操作,因此它几乎不会花费任何时钟周期,尤其是当内联或用作宏时。
#include <cmath>
#include <iostream>
int main()
{
double d = 3.1459038585;
std::cout << std::floor(d * 100.) / 100. << std::endl;
}