如何在不舍入数字的情况下显示数字

时间:2009-05-29 22:24:09

标签: c# rounding

我有这个号码:1234.5678(作为文字)

我需要这个数字为double,点后面只有2个数字

但没有Round数字

在1234.5678 - 我得到1234.57

在12.899999 - 我得到12.90

我怎么做?

7 个答案:

答案 0 :(得分:5)

你应该能够得到你想要的东西:

number.ToString("#0.00")

答案 1 :(得分:3)

乘以100,取数字的floor(),再除以100。

答案 2 :(得分:3)

你没有发布你想要的结果,但我认为你想要截断,所以你会看到1234.56和12.89。尝试:

decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);

答案 3 :(得分:1)

这是因为您无法将这些数字完全表示为双精度数,因此转换,舍入,然后重新打印为文本会导致精度下降。

改为使用'decimal'。

答案 4 :(得分:1)

采用这种浮点运算!

var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
  ans = num.Substring(0, num.IndexOf('.') + 3);
}

答案 5 :(得分:1)

这应该可以解决问题。

string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;

答案 6 :(得分:-1)

这不起作用?

        double d = 1234.5678;
        double rounded =Math.Round(d, 2);