在C#中,如何在不舍入的情况下获得所需数量的小数点值?

在C#中,如何在不舍入的情况下获得所需数量的小数点值?,c#,floating-point,rounding,C#,Floating Point,Rounding,可能重复: 我使用浮点数,我想得到小数点的数目,而不需要进行任何舍入 例如,浮子x=12.6789 如果我想要最多2个小数点,那么我应该得到(x=12.67)而不是(x=12.68),这是四舍五入时发生的 请建议最好的方法。您应该能够使用以下方法: decimal x = 12.6789m; x = Math.Truncate(x * 100) / 100; //This will output 12.67 您可以通过铸造来实现这一点: float x = 12.6789; float re

可能重复:

我使用浮点数,我想得到小数点的数目,而不需要进行任何舍入

例如,浮子x=12.6789 如果我想要最多2个小数点,那么我应该得到(x=12.67)而不是(x=12.68),这是四舍五入时发生的

请建议最好的方法。

您应该能够使用以下方法:

decimal x = 12.6789m;
x = Math.Truncate(x * 100) / 100; //This will output 12.67

您可以通过铸造来实现这一点:

float x = 12.6789;
float result = ((int)(x * 100.0)) / 100.0;

这可能需要一个框架调用,但您可以编写这样的调用:

//Scale up, floor, then round down.
//ie: 1.557 
//    scaled up: 155.7
//    floord:  155
//    scaled down: 1.55
public float MyTruncate(float f, int precision){
   float scale = precision * 10;
   return (Math.Floor(f * scale)) / scale;
}

你试过什么?什么不起作用?请发布您的代码并解释您遇到的问题。