我在Unity3D工作,C#我得到了一个奇怪的结果.谁能告诉我为什么我的代码等于0?
float A = 1 / 90;
Run Code Online (Sandbox Code Playgroud)
文字1和90被解释为int.因此使用整数除法.之后,结果转换为a float.
通常,C#将读取所有数字序列(不带小数点)作为int.一个int将被转换为一个float ,如果必要.但在转让之前,这不是必要的.所以两者之间的所有计算都是以ints 完成的.
换句话说,你写的是:
float A = (float) ((int) 1)/((int) 90)
Run Code Online (Sandbox Code Playgroud)
(在这里明确说明,这或多或少是编译器读取的内容).
现在处理两个int的除法,使得它仅考虑整数部分.的组成部分0.011111是0由此为零.
不过,若你修改的文字之一,浮点(1f,1.0f,90f,...),或两者兼而有之,这将工作.因此,使用以下之一:
float A = 1/90.0f;
float A = 1.0f/90;
float A = 1.0f/90.0f;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将执行浮点除法.其中考虑了两个部分.
等等
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |