除以0.9 c#总是返回0

TMB*_*B87 0 c# math

我正在尝试做一个简单的数学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;    
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

我的猜测是,该类型m_LocationSqrMtrint,在这种情况下,这个表达式:

700 / m_LocationSqrMtr
Run Code Online (Sandbox Code Playgroud)

...将使用整数运算来计算,并将结果转换为float.我怀疑你想要:

if (m_LocationCosts > 450 && m_LocationCosts < 700)
{
    m_DefaultPricing = 700f / m_LocationSqrMtr;    
}
Run Code Online (Sandbox Code Playgroud)

f字面上的后缀表示它是float文字,因此首先m_LocationSqrMtr将其提升为float,然后使用float算术执行除法.

但是,如果这意味着要表示货币值,则应考虑使用decimal而不是float- 然后可能将值舍入为2位小数.如果您进行所有货币算术运算decimal,则不太可能遇到意外结果......

  • @TomBeech:使用`m`后缀代替`f`. (2认同)