除以100后,随机值将四舍五入

时间:2017-08-03 08:44:18

标签: c# random floating-point decimal rounding

为什么 fRand float变量在此示例中接收整数结果?随机产生一个正确的数字,然后除以100,由于某种原因,小数部分被切断。这背后的逻辑是什么?

Random randValue = new Random();
float fRand;
fRand = randValue.Next(1, 1000) / 100;
label1.Text = fRand.ToString("F");
浮动类型的

SOLUTIONS

Random randValue = new Random();
float fRand;
fRand = randValue.Next(1, 1000) / 100.0f; // depends on using the numeric divisor 100
label1.Text = fRand.ToString("F");

Random randValue = new Random();
float fRand;
fRand = (float)randValue.Next(1, 1000) / 100; // does not depend on the numeric divisor 100 and can work with variables as well
label1.Text = fRand.ToString("F");

3 个答案:

答案 0 :(得分:1)

randValue.Next将返回一个整数。用int去掉int当然是一个整数运算,它只能产生整数

所以你应该表明你想要一个浮点运算:

fRand = randValue.Next(1, 1000) / 100f;

编辑:当然你也可以转换第一个操作数:

fRand = (float) randValue.Next(1, 1000) / 100;

甚至

    fRand = randValue.Next(1, 1000) / (float)100;

答案 1 :(得分:1)

int除以int个结果分为int

替换

fRand = randValue.Next(1, 1000) / 100;

通过

fRand = randValue.Next(1, 1000) / 100f;

答案 2 :(得分:-1)

更统一的答案是fRand =(float)randValue.Next(1,1000)/ 100;

它不依赖于int值的表示方式(变量,数字)。