我有一个这样的数字:1.79769313486232E+308
我想将它四舍五入到最接近的整数。所以我尝试了以下一个:
Math.Round(1.79769313486232E+308, 0)
但它仍然给出相同的结果。
谁能帮我。?
由于点后的数字少于 309 位,因此您的数字是整数。科学计数法一定会让你感到困惑,例如 1.234e+003 也是一个整数,因为它等于 1234。
最接近的整数与您尝试四舍五入的数字相同;它有 309 位数字:
1.79769313486232E+308 == 1797693134862320000....00
“E+308”在科学计数法中的意思是“将这个乘以 10 的 308 次方”。一个简单的例子:
1.234E+3 == 1.234 * Math.Pow(10, 3) == 1.234 * 1000 == 1234
您可以通过打印数字轻松说服自己:
BigInteger b = BigInteger.Parse("1.79769313486232E+308", NumberStyles.Any, CultureInfo.InvariantCulture);
Console.Write(b.ToString()); // <- 1797693134862320000....00
double.Parse("1.00E+4", CultureInfo.InvariantCulture)
试试这个
为我工作
如果您使用的是.NET 框架 4.0 ,请添加对 System.Numerics的引用 ,然后
BigInteger b = BigInteger.Parse("1.79769313486232E+308", NumberStyles.Any, CultureInfo.InvariantCulture);