.net 使用货币字符串格式时防止小数舍入
我有一些来自外部服务的十进制数据。我需要将数据格式设置为小数点后2位,因为它代表金钱,但如果我使用标准C格式,我会将数字四舍五入:.net 使用货币字符串格式时防止小数舍入,.net,string-formatting,.net,String Formatting,我有一些来自外部服务的十进制数据。我需要将数据格式设置为小数点后2位,因为它代表金钱,但如果我使用标准C格式,我会将数字四舍五入: var x = 42.999m; var y = string.Format("{0:C}", x); 这导致y包含43.00英镑。我怎么能把它四舍五入到42.99英镑呢 (注意这不一样)如果要使用非默认舍入策略,需要执行以下操作: var x = 42.999m; var y = string.Format("{0:C}", Math.Floor(x * 1
var x = 42.999m;
var y = string.Format("{0:C}", x);
这导致y包含43.00英镑。我怎么能把它四舍五入到42.99英镑呢
(注意这不一样)如果要使用非默认舍入策略,需要执行以下操作:
var x = 42.999m;
var y = string.Format("{0:C}", Math.Floor(x * 100) / 100);
Math.Floor
四舍五入;但是,它不需要小数位数,因此您必须强制执行2位小数行为。虽然这个问题已经解决,但我建议您使用
var y = String.Format("{0:c3}",x);
// "{0:C3}" is for -123.456 ("C3", en-US) -> ($123.456)