12

如何用一定数量的有效数字表示 C 中极大或极小的数字。例如,如果我想对 1.54334E-34 进行计算,我该怎么做。另外,这是否适用于 OpenCL 代码?

4

2 回答 2

29
float var = 1.54334E-34;
double var2 = 1.54334E-34;

printf("\n normal:%f\n sci:%e \n or \n sci:%E   \n",var,var,var);
printf("\n normal:%f\n sci:%e \n or \n sci:%E   \n",var2,var2* 1.0E3 ,var2 * 1.0e3);
于 2013-06-03T21:25:47.033 回答
8

我不知道任何 OpenCL,但 32 位 C 浮点数将保持+/- 3.4e +/- 38 (~7 位)范围内的值,并且翻倍更多。如果您想要任意精度的算术/数学,您可能需要查看GMPMPFR

于 2013-06-03T21:23:07.263 回答