c/c++ を使用して、大きな倍精度数 (>1e6) を最も近いがより大きな浮動小数点数に丸めたいと考えています。私はこれを試しましたが、それが常に正しいかどうかはわかりません。それを行うための最速の方法があるかもしれません:
int main() {
// x is the double we want to round
double x = 100000000005.0;
double y = log10(x) - 7.0;
float a = pow(10.0, y);
float b = (float)x;
//c the closest round up float
float c = a + b;
printf("%.12f %.12f %.12f\n", c, b, x);
return 0;
}
ありがとうございました。