只是为了前进,我的.net和c#expierence是非常有限的,可以说我是一个完整的菜鸟:)但我确实掌握了OOP,因为我通常使用PHP(FWIW)。
我的问题似乎与这一行有关:
Session["total"] = dt.Compute("SUM(price)", "").ToString();
这将输出总共说“9.2”,其中价格为“9.20”,从几条记录线中如下:
dt.Rows.Add(strRecord, 9.20, dropDownListDistrict_stepTitle.Text);
因此9.20 + 9.20 =“18.40”,但页面显示“18.4”。
显示总和的标签是:
<asp:Label ID="labelTotal3" runat="server" Text="0" />
从我收集的内容来看,我遇到了某种类型的铸造问题?
希望我没有错过任何东西,显示所有代码有点困难,但希望有人可以指出我正确的方向?
问题是;如何获得额外的小数位以显示我的总和(或者为什么它会丢弃最后一个小数位?)。
TIA 贾里德
答案 0 :(得分:4)
尝试.ToString("N2")
答案 1 :(得分:3)
因此9.20 + 9.20 =“18.40”,但页面显示“18.4”。
18.4 = 18.40。尾随零对数字没有任何意义,所以除非你要求它们被打印,否则它们不会。有关根据您的要求格式化数字的不同方式,请参阅String Format for Double。
答案 2 :(得分:1)
您对问题的评估不正确
9.20 + 9.20 = 18.4(尾随零点将被删除) 因此显示屏将自动为“18.4”
尝试这样的事情
string.Format("{0:C0}", myNumber)
您还可以使用以下函数(在VB中对不起)来真正想象并换出货币符号,添加/删除小数位数等。这里的想法不是它始终适用,而是如果你正在寻求更大的灵活性,那只是另一种选择。
Public Shared Function CustomFormatCurrency(ByVal input As Decimal) As String
Dim nfi As System.Globalization.NumberFormatInfo = New System.Globalization.NumberFormatInfo
nfi.CurrencyDecimalDigits = 0
nfi.CurrencySymbol = "$"
Return String.Format(nfi, "{0:C}", input)
End Function
答案 3 :(得分:0)
没有什么能真正迷失,因为18.4与18.40完全相同(对于电脑来说,就是......)。要解决此问题,您需要指定格式:
.ToString("n2");
这会将您的值格式化为小数点右侧2位数的数字
答案 4 :(得分:0)
尝试ToString("##,#.##")
或string.Format("{0:##,#.##}")
答案 5 :(得分:0)
你想:
String.Format("{0:0.0}", 9.2); //9.2
String.Format("{0:0.00}", 9.2); //9.20
String.Format("{0:0.000}", 9.2); //9.200
答案 6 :(得分:0)
我发现在类之前传递变量的实例中,在ToString之前,可能存在丢失并且ToString是准确的,因为它通常是,例如,如果你想测试它的准确性,只是除以10和ToString它,它将带来重复的小数位。下面是我遇到的一个类似问题的例子,以及我是如何解决这个问题的,尽管我怀疑我的方法比较清晰。
实施例
for i in range(0,5):
l.append(uniform(0,10))
e_value=e(l)
d=dmean(e_value,l,uniform(0,10))
在其他地方做
class MyDecimal
{
public decimal Number = 138 / 10;
}
在收集小数后,我结束了而不是除以100,我需要除以1000,问题看起来是ToString正在降低小数点后三位,但事实上它并没有在类之间被拉
开始