日期:2014-05-17  浏览次数:20977 次

请教下如要为负数,就赋值为0的简单方法?请前辈指导!
环境:vs2010+c#+winform
问题:程序里有很多下边的这些公式,希望如果ymg11最终为负数,就把ymg11赋值为0,请教下有没有什么简单的方法?
  
ymg11 =  Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1);

------解决方案--------------------

ymg11 =  Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1)<0?0:Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1);
------解决方案--------------------
if(ymg11 < 0)
{
ymg11 =0;
}
------解决方案--------------------
ymg11=ymg11 <0?0:ymg11
------解决方案--------------------

ymg11 =  Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1); 
if(ymg11<0)
  ymg11=0;

------解决方案--------------------
ymg11 =  Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1);
if(ymg11<0)
    ymg11=0;
还是4#的这个比较妥当。
从代码的可读性考虑,合并成一句的并不好。
------解决方案--------------------
ymg11 = Math.Max(0,Math.Round((ymg04 - ymg10 * (ymfhcd / 100) * (ymfhnhl / 100)) / ((ymnscd / 100) * (ymnshl / 100)),1));

------解决方案--------------------
引用:
ymg11=ymg11 <0?0:ymg11


只有这样最简单了。