我正在尝试解决这里的数据谜,但我不确定这是我的代码问题还是互联网浏览器问题...它在IE6和IE8中工作正常,但不知何故,当数据被客户使用时,数据显示不正确没有使用IE ...
decimal? a = 1.0000m;
decimal? b = 0.6999m;
decimal? c = null;
string aDesc = "";
string bDesc = "";
string cDesc = "";
if (a >= (Decimal).8)
aDesc = "condition A achieved";
if (b >= (Decimal).8)
bDesc = "condition B achieved";
if (c >= (Decimal).8)
cDesc = "condition C achieved";
在所有浏览器中,是否在所有字符串的末尾分配了所有字符串?感谢。
答案 0 :(得分:2)
您正在运行C#,应该在服务器端执行。它应该与浏览器无关。
此外,只有第一个条件成立。第一个值大于.8,第二个值显然不大,我相信比较中的可空类型总是返回false。
答案 1 :(得分:1)
注意:您可以使用(Decimal).8
代替.8m
。它更短,更清洁。
在这种情况下比较null(如在Nullable中)会导致每种情况都为false。在一个新项目中试试这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
decimal? a = null;
if (a < .8m)
{
MessageBox.Show("Less Than");
}
else if (a >= .8m)
{
MessageBox.Show("Greater Than or equal to");
}
else
{
MessageBox.Show("Neither");
}
}
}
如果你考虑一下,这是有道理的。 null
表示缺少值,这与 none (或零)非常不同,后者是特定值。没有东西的比较没有真正的定义,它不是更大,也不是更小,所以两者都解决了错误。是不存在的人比我高吗?不,他不存在。一个不存在的人比我短吗?不,他不存在。
编辑
另外,你会发现你的第二个条件(正如其他人指出的那样)总是错误的。
<强> /修改
这就是你所看到的,而不是浏览器问题,希望有所帮助!