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

时间:2011-08-08 14:00:00

标签: c# floating-point rounding

  

可能重复:
  C# Double - ToString() formatting with two decimal places but no rounding

我正在使用浮动数字,我希望获得小数点数而不进行任何舍入。

对于Eg。 float x = 12.6789 如果我想要最多2个小数点,那么我应该得到(x = 12.67)和NOT(x = 12.68),这在舍入发生时会发生。

Plz建议哪种方法最好。

3 个答案:

答案 0 :(得分:8)

您应该可以使用Math.Truncate()

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

答案 1 :(得分:3)

你可以通过施放来实现这一点:

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

答案 2 :(得分:1)

可能有一个框架调用,但你可以写一个像:

//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;
}