我有这个号码:1234.5678(作为文字)
我需要这个数字为double,点后面只有2个数字
但没有Round数字
在1234.5678 - 我得到1234.57
在12.899999 - 我得到12.90
我怎么做?
答案 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);