简单划分

m.e*_*son 5 .net c#

我必须做一些愚蠢的事情:

float ans = (i/3);
Run Code Online (Sandbox Code Playgroud)

那么为什么何时i = 7ans出现在2.0?

i 是一个int

Dar*_*rov 11

这是因为如果两个操作数都是整数,则/运算符正在执行整数除法.你可以这样做:

float ans = (i / 3.0f);
Run Code Online (Sandbox Code Playgroud)

  • @ m.edmondson:数字后缀是编译器的提示,应该将文字编号视为某种类型.它是`(float)3.0`的简写 (2认同)

Bol*_*ock 6

您需要将其中一个操作数设置为float,否则在将结果转换为float之前,首先使用整数(总是产生整数)进行计算.

float ans = ((float) i) / 3;
Run Code Online (Sandbox Code Playgroud)