将一个浮点数格式化为保留两位小数。

18 浏览
0 Comments

将一个浮点数格式化为保留两位小数。

我目前正在为客户的网站构建销售模块。到目前为止,我已经成功计算出销售价格,但我遇到了一个问题,那就是将输出格式化为两位小数。

我目前正在将这个调用保存在一个变量中,以便我可以将结果数据绑定到一个列表视图。

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString("F2"))),

有人可以告诉我如何将输出格式化为两位小数吗?非常感谢!

0
0 Comments

浮点数格式化为小数点后2位的问题出现的原因是浮点数无法准确地表示大多数小数分数。解决方法是使用`decimal`类型代替`float`类型来表示价格,并使用`Decimal.Round()`函数将其四舍五入到小数点后2位。虽然在这里称呼`float`类型为"绝对不可接受"有些夸张,但使用`Decimal`类的想法确实是一个好主意。然而,如果只是询问变量类型的建议,那就没法改变方法,因为它只接受`float`类型,没有方法重载的选项。

0
0 Comments

问题的出现原因:这篇文章的作者发表了对于使用插值字符串格式化浮点数的困扰。作者经常需要格式化浮点数,但是每次都需要通过试错和查阅大量文档来找到正确的格式化方法。

解决方法:作者总结了多种格式化浮点数的方法,并通过示例代码进行了演示。

文章内容如下:

在某些情况下,你可能想要使用插值字符串来格式化浮点数。我发布这篇文章是因为我已经厌倦了每次需要格式化一些标量时都要进行试错,最终浏览大量文档的过程。

以下是多种格式化浮点数的方法示例:

$"{1234.5678:0.00}"        "1234.57"        保留两位小数,注意数值已经四舍五入
$"{1234.5678,10:0.00}"     "   1234.57"     右对齐
$"{1234.5678,-10:0.00}"    "1234.57   "     左对齐
$"{1234.5678:0.#####}"     "1234.5678"      小数点后保留5位可选数字
$"{1234.5678:0.00000}"     "1234.56780"     小数点后强制保留5位数字,注意尾随零
$"{1234.5678:00000.00}"    "01234.57"       小数点前强制保留5位数字,注意前导零
$"{1234.5612:0}"           "1235"           作为整数,注意数值已经四舍五入
$"{1234.5678:F2}"          "1234.57"        标准固定小数位
$"{1234.5678:F5}"          "1234.56780"     小数点后保留5位数字,注意尾随零
$"{1234.5678:g2}"          "1.2e+03"        标准一般格式,保留2位有效数字,注意 "e"
$"{1234.5678:G2}"          "1.2E+03"        标准一般格式,保留2位有效数字,注意 "E"
$"{1234.5678:G3}"          "1.23E+03"       标准一般格式,保留3位有效数字
$"{1234.5678:G5}"          "1234.6"         标准一般格式,保留5位有效数字
$"{1234.5678:e2}"          "1.23e+003"      标准指数格式,小数点后保留2位数字,注意 "e"
$"{1234.5678:E3}"          "1.235E+003"     标准指数格式,小数点后保留3位数字,注意 "E"
$"{1234.5678:N2}"          "1,234.57"       标准数字格式,注意千位分隔符
$"{1234.5678:C2}"          "$1,234.57"      标准货币格式,注意美元符号
$"{1234.5678:P2}"          "123,456.78 %"   标准百分比格式,注意数值已经乘以100
$"{1234.5678:2}"           "2"              :)

性能警告:插值字符串的执行速度较慢。根据我的经验,从快到慢的顺序如下:

1. `value.ToString(format)+" blah blah"`

2. `string.Format("{0:format} blah blah", value)`

3. `$"{value:format} blah blah"`

以上就是关于如何将浮点数格式化为两位小数的问题的原因和解决方法。

0
0 Comments

浮点数保留两位小数的格式化问题

在上述内容中,提供了解决浮点数保留两位小数的格式化问题的方法。方法是通过将格式传递给ToString方法来实现。

具体方法如下:

myFloatVariable.ToString("0.00"); //2位小数
myFloatVariable.ToString("n2"); // 2位小数
myFloatVariable.ToString("c2"); // 2位小数货币格式

在这些方法中,"N2"和"C2"会在数字之间添加千位分隔符,而"0.00"则不会。

还有一点需要注意的是,所有这些浮点数格式化方法都会进行四舍五入。

对于"00.00"这种格式,有人会问为什么要有两个0,有什么用处呢?

实际上,这样的格式会在字符串前面填充0。比如,1.1会变成字符串"01.10",22.2会变成字符串"22.20"。这可能对排序等操作很有用。

虽然"0.00"这种格式可以正常工作,但我在官方文档(上面提供的链接)中找不到相关信息,难道我眼花了吗?

其实,在我提供的链接中,还有一些附加信息。你可以在这里阅读更多信息:learn.microsoft.com/en-us/dotnet/api/… 或者在这里:learn.microsoft.com/en-us/dotnet/api/…。可以在这些链接中找到有关自定义格式化的更多信息。

0