2

小数点以下の桁を削除する必要がありますが、すべてではありません。

たとえば、double dig=3.1459038585 を dig=3.14 に変換する必要があります

100 まで複数回掘り、それを整数に変換してから、再度 double に変換して 100 に削除する必要があると思います (これはすべて 1 行になります)。しかし、これをより速く行う機能はありますか?

4

2 に答える 2

9

この機能を実装する関数はより柔軟になり、そのため定義上遅くなります。そうです、これを書いてください:

double truncated = (double)((int)dig*100)/100;

いずれにせよ、すべて CPU ネイティブの操作であるため、特にインライン化またはマクロとして使用する場合は、ほとんどクロック サイクルを消費しません。

于 2013-05-22T12:24:06.047 に答える
4
#include <cmath>
#include <iostream>
int main()
{
    double d = 3.1459038585;
    std::cout << std::floor(d * 100.) / 100. << std::endl; 
}
于 2013-05-22T12:25:34.120 に答える