繁体   English   中英

如何将字符串转换为带小数点后3位的十进制数?

[英]How to convert string to decimal with 3 decimal places?

string num = 23.6;

我想知道如何将其转换为带小数点后3位的十进制数

decimal nn = 23.600 

有什么方法吗?

我尽力了..

首先你的string num = 23.6; 甚至不会编译。 您需要对字符串使用双引号,如string num = "23.6";

如果你想把它作为decimal ,你需要先用一个IFormatProvider解析它. 作为NumberDecimalSeparatorInvariantCulture (如果你的CurrentCulture使用.已经,你不必传递第二个参数);

decimal nn = decimal.Parse(num, CultureInfo.InvariantCulture);

现在我们有一个 23.6作为 decimal值。 但作为一个值, 23.623.6023.60023.60000000000是完全一样的,对不对? 无论您将哪一个解析为十进制,您将获得与调试器中的 23.6M相同的值。 貌似这些都不是真实的。 请参阅Jon Skeet对此答案的评论以及他在.NET文章中关于十进制浮点的 “保持零”一节。

怎么办? 是的,我们需要将它的文本表示形式设置为23.600 由于我们在文本表示中只需要小数分隔符, 因此"F"格式说明符将满足需要。

string str = nn.ToString("F3", CultureInfo.InvariantCulture); // 23.600

这里有两个不同的概念。

  1. 视图

您可以将值设置为1并将其视为 1.01.0000+000001.00

你有字符串23.6 你可以使用var d = decimal.Parse("23.6")将其转换为十进制

现在你有一个等于23.6的值你可以通过使用d.ToString("F3")来查看它像23.600

您可以阅读有关格式化十进制值的更多信

在我的情况下对我有用的东西是num.ToString(“#######。###”)

十进制不是字符串,它不显示尾随零。 如果你想要一个显示3个小数位的字符串,包括尾随零,你可以使用string.Format:

decimal nn= 23.5;
var formattedNumber = string.Format("{0,000}", nn);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM