为什么 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");
答案 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值的表示方式(变量,数字)。