C# 如何防止小数舍入?

C# 如何防止小数舍入?,c#,.net,C#,.net,我用的是c#,每次我插入3位小数,数字就会四舍五入,例如 1.538 轮 至1.54 我希望数字保持原样,例如1.53(仅保留小数点后两位,无任何舍入) 我该怎么做呢?我相信您想要使用Math.Truncate() Truncate将删除结束位。但是,请记住要小心负数 这取决于你是总是想向0取整,还是只是剪掉结尾,Math.Floor总是向负无穷大取整。这里介于两者之间。找到了一个链接,该链接提供了一个很好的代码片段,允许您指定所需的小数位数,例如Math.Round()允许 基本上是这样的:

我用的是c#,每次我插入3位小数,数字就会四舍五入,例如

1.538

至1.54

我希望数字保持原样,例如1.53(仅保留小数点后两位,无任何舍入)


我该怎么做呢?

我相信您想要使用
Math.Truncate()

Truncate将删除结束位。但是,请记住要小心负数

这取决于你是总是想向0取整,还是只是剪掉结尾,
Math.Floor
总是向负无穷大取整。这里介于两者之间。

找到了一个链接,该链接提供了一个很好的代码片段,允许您指定所需的小数位数,例如Math.Round()允许

基本上是这样的:

public static double Floor(this double d, int decimals) {
    return Math.Floor(d * Math.Pow(10, decimals)) / Math.Pow(10, decimals);
}

没有更多的信息很难回答你的问题。在哪里“插入”小数位?如何打印?最有可能的是,数字存储正确,但按您打印的方式,只显示了2位小数。Math.Truncate()可能会在这里帮助您,但我们需要更多信息。这肯定需要更多信息,例如生成所列结果的代码片段。请使用技术,提问时的描述性术语。在这种情况下,用户可能是编程新手,并试图以技术术语描述问题,尽可能达到其技能水平。虽然他也许能更好地描述问题的背景。
public static double Floor(this double d, int decimals) {
    return Math.Floor(d * Math.Pow(10, decimals)) / Math.Pow(10, decimals);
}