我正在尝试做一个简单的数学picee,如果一个值在两个值之间,我会计算出来,如果是这样,那么它应该做一个简单的除法.然而,有时候除以的值是0.9,0.6等,并且总是返回0.
在这个例子中,
int m_LocationSqrMtr = 4339;
float m_DefaultPricing = Convert.ToSingle(DefaultPricing);
float m_manDays;
if (m_LocationCosts > 450 && m_LocationCosts < 700)
{
    m_DefaultPricing = 700 / m_LocationSqrMtr;    
}
我的猜测是,该类型m_LocationSqrMtr是int,在这种情况下,这个表达式:
700 / m_LocationSqrMtr
...将使用整数运算来计算,并将结果转换为float.我怀疑你想要:
if (m_LocationCosts > 450 && m_LocationCosts < 700)
{
    m_DefaultPricing = 700f / m_LocationSqrMtr;    
}
f字面上的后缀表示它是float文字,因此首先m_LocationSqrMtr将其提升为float,然后使用float算术执行除法.
但是,如果这意味着要表示货币值,则应考虑使用decimal而不是float- 然后可能将值舍入为2位小数.如果您进行所有货币算术运算decimal,则不太可能遇到意外结果......
| 归档时间: | 
 | 
| 查看次数: | 331 次 | 
| 最近记录: |