我只是想不出以下代码.
int d = 5;
float f = 3.8f;
int ret = d*f;
Run Code Online (Sandbox Code Playgroud)
按照我的预期,退步是18,而不是19.为什么?
这里有两个问题.第一个是浮点值不是小数,所以3.8f更像是3.79999999999999999999923或类似的东西.第二个是当转换为int时,系统将始终截断十进制值,而不是舍入.
因此,如果您可以查看处理器,您会看到它正在运行
3.79999999999999999999923 * 5 = 18.999999999999999999615
Run Code Online (Sandbox Code Playgroud)
然后删除非整数部分:
18
Run Code Online (Sandbox Code Playgroud)