sur*_*sur 10 c floating-point type-conversion floating-point-precision
示例代码:
int main() {
float f = 123.542;
int i = (int)f;
printf("%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)
dus*_*uff 10
123.3443不能用浮点数精确表示 - 在32位浮点数中,它实际上表示为16166984 / 131072,实际上是123.34429931640625,而不是123.3443.(大概是6.8 x 10 ^ -7.)
如果这真的是您想要的结果(可能不是这样),请看看IEEE-754如何工作,并拉出您最喜欢的任意精度数学套件.一旦你明白这是怎么回事"幕后",产生一个精确的表示应该不会太辛苦.生成"足够接近"的圆形表示实际上要困难得多.:)
int i = (int) (f * 10000 + 0.5);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56409 次 |
| 最近记录: |