Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用货币字符串格式时防止小数舍入_.net_String Formatting - Fatal编程技术网

.net 使用货币字符串格式时防止小数舍入

.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

我有一些来自外部服务的十进制数据。我需要将数据格式设置为小数点后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 * 100) / 100);

Math.Floor
四舍五入;但是,它不需要小数位数,因此您必须强制执行2位小数行为。

虽然这个问题已经解决,但我建议您使用

var y = String.Format("{0:c3}",x);
// "{0:C3}" is for -123.456 ("C3", en-US) -> ($123.456)