all*_*tta 0 c++ type-conversion
我有一个函数作为long参数,我希望它返回该数字作为float带有七位小数的 a 。
这long进入函数:631452947,我希望函数将其转换并返回float:63.1452947
我怎样才能做到这一点?
我已经尝试过这个:
float makeLatLon (long val) {
float tzt = (float)val/10000000.0;
return tzt;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
float逗号后的七位数字意味着总共九位数字的精度,并且在 IEEE 32 位 FP 类型的平台上(几乎无处不在),您只能期望七位数字的精度。用一个double:
long n = 631452947;
float f = n / 10000000.f;
double d = n / 10000000.;
std::cout << std::setprecision(9)
<< f << std::endl
<< d << std::endl;
Run Code Online (Sandbox Code Playgroud)
我的盒子上印着
63.1452942
63.1452947
Run Code Online (Sandbox Code Playgroud)
所以你会发现使用 afloat会导致舍入误差。
| 归档时间: |
|
| 查看次数: |
12281 次 |
| 最近记录: |