C# 如何在点后取6个数字,但不舍入数字?

C# 如何在点后取6个数字,但不舍入数字?,c#,winforms,C#,Winforms,如何在点后取6个数字,但不舍入数字 例如: 102.123456789=>102.123456 9.99887766 => 9.998877 在C#winforms中 thak’s Prevance您可以使用该方法和10^6乘数: decimal x = 102.12345689m; decimal m = 1000000m; decimal y = Math.Truncate(m * x) / m; Console.WriteLine(y); // Prints 102.123456

如何在点后取6个数字,但不舍入数字

例如:

102.123456789=>102.123456

9.99887766 => 9.998877
在C#winforms中

thak’s Prevance

您可以使用该方法和10^6乘数:

decimal x = 102.12345689m;
decimal m = 1000000m;
decimal y = Math.Truncate(m * x) / m;
Console.WriteLine(y); // Prints 102.123456
您可以使用该方法和10^6乘数:

decimal x = 102.12345689m;
decimal m = 1000000m;
decimal y = Math.Truncate(m * x) / m;
Console.WriteLine(y); // Prints 102.123456

我知道这是丑陋的使用字符串,但我想我还是把它:

double x = 9.9887766;
string[] xs = x.ToString().Split('.');
double result = double.Parse(xs[0] + "." + xs[1].Substring(0, Math.Min(xs[1].Length, 6)));

我知道这是丑陋的使用字符串,但我想我还是把它:

double x = 9.9887766;
string[] xs = x.ToString().Split('.');
double result = double.Parse(xs[0] + "." + xs[1].Substring(0, Math.Min(xs[1].Length, 6)));

这可能是一个冗长的方法,但是把它变成一个字符串,定位小数点,然后抓住字符串减去小数点后第6位的任何内容怎么样。然后可以将其转换回十进制。

可能是一种冗长的方法,但是如何将其转换为字符串,找到小数点,然后抓住字符串减去小数点后第6位的任何内容。然后你可以把它变回十进制。

它是粗糙的,但是:

decimal Number = 102.123456789;
string TruncateTarget = Number.ToString();
decimal FinalValue = Decimal.Parse(TruncateTarget.Substring(0, TruncateTarget.IndexOf('.') +6));

这很粗糙,但是:

decimal Number = 102.123456789;
string TruncateTarget = Number.ToString();
decimal FinalValue = Decimal.Parse(TruncateTarget.Substring(0, TruncateTarget.IndexOf('.') +6));
在你的情况下,系数是10^6


在你的情况下,系数是10^6

那么,你只是想在小数点后第六位“切掉”数字,而不是进行任何形式的舍入?我建议,但你说你希望截断而不是舍入。那么,你只是想在小数点后第六位“切掉”数字,而不是进行任何形式的舍入?我建议,但是你说你想要的是截断而不是舍入。这会截断成一个整数——“Truncate将d舍入到接近零的整数。”@Chris:代码是有效的。他使用10^6乘法器来解决这个问题——实际上相当优雅,比使用字符串更干净@Dan-该代码是在@ChrisF downvote之后编辑的,请检查编辑。@thecloudlessky-只是为了指出我没有进行downvote,只是发表了评论。我喜欢让人们有机会先更正他们的帖子。@Dan,我想那是因为我删除了答案,然后编辑并取消删除了它。这会截断成一个整数——“将d四舍五入到最接近零的整数”。@Chris:代码行得通。他使用10^6乘法器来解决这个问题——实际上相当优雅,比使用字符串更干净@Dan-该代码是在@ChrisF downvote之后编辑的,请检查编辑。@thecloudlessky-只是为了指出我没有进行downvote,只是发表了评论。我喜欢让人们有机会先更正他们的帖子。@Dan,我想那是因为我删除了答案,然后编辑并取消删除了它。与我的解决方案类似,但您提供了实际的代码。如果您走这条路线,您可能需要首先检查xs[1]是否不是null(调用子字符串将通过异常进行)。同样对于非空值,如果它包含的字符少于6个,会发生什么情况。@Paul-是的,在你回答之前我抓住了第二部分。但是是的。。。这是一个非常粗糙的例子。如果OP希望始终检查
xs[1]
是否为空/不存在,那么他可以这样做。与我的解决方案类似,但您提供了实际的代码。如果您走这条路线,您可能需要首先检查xs[1]是否不是null(调用子字符串将通过异常进行)。同样对于非空值,如果它包含的字符少于6个,会发生什么情况。@Paul-是的,在你回答之前我抓住了第二部分。但是是的。。。这是一个非常粗糙的例子。如果OP希望始终检查
xs[1]
是否为空/不存在,那么他可以这样做。