【发布时间】:2014-07-03 09:59:59
【问题描述】:
我发现模数为 2.0 %0.1,这是双变量返回“0.09999”而不是“0”的结果。
我的代码是:
var distanceFactor = slider.Value % step; //This do not return 0 when Value=2.0 and step=0.1
if (distanceFactor != 0)
{
slider.Value -= distanceFactor;
}
elseif(distanceFactor == 0)
{
//do something here
}
txtblUnits.Text = Math.Round(slider.Value, 1).ToString();
当Value=2.0,step=0.1时,elseif条件下如何获取控制?
【问题讨论】:
-
您可以检查 distanceFactor-step 是否小于预定义的 epsilon 值。顺便说一下,对双打取模不是一个好主意......
-
模数不应与非整数值一起使用,因为在数学中,它是一个整数运算符。您正在尝试做 mod(2, 0.1) 这与做 mod(20,1) 相同
-
查看提供的“重复问题”链接,有一个模运算符发生的等式......只需按常规方式进行操作:......
double a, b, r; a = 120; b = .05; r = a - Math.floor(a / b) * b;跨度>
标签: c# .net casting double modulo