我需要更新一些现有代码,以便(有条件地)显示一个没有任何小数位的数字。
使用以下两行取决于是否需要“£”符号。
currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0.00}", data);
或者
currency = string.Format(CultureInfo.CurrentCulture, "{0:#,0.00}", data);
我尝试将此代码更改为使用{0:£#,0}并删除小数位后,将“数据”值23699.99舍入为23700而不是23699.
我尝试{0:£#,0}尝试了解发生了什么,并再次将23699.99舍入到23700.
有人可以解释为什么会这样吗?
提前谢谢你。
答案 0 :(得分:6)
格式化数字时,它总是以您选择的精度四舍五入到最接近的数字。例如,如果使用一个小数位格式,则0.86将舍入为0.9,而0.96将舍入为1.0。
同样,如果您打印时没有小数位,则23699.99将舍入为23700,因为23700是没有小数位的数字,最接近23699.99。
如果您想要向下舍入使用Math.Floor。
答案 1 :(得分:0)
与上述相同,但有例子:
using System;
using System.Globalization;
namespace testings
{
class Program
{
static void Main(string[] args)
{
string currency;
decimal data = 23699.99m;
currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0}", data);
Console.WriteLine(currency);
currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0.00}", data);
Console.WriteLine(currency);
currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0.00}", Math.Floor(data));
Console.WriteLine(currency);
Console.ReadKey(false);
}
}
}
返回:
£23,700
£23,699.99
£23,699.00