我试图将小数点后的四舍五入到四位小数。小数以下是
1.0715086071862673E + 301 但是当我使用Math.Round function.it不能正常工作并返回相同的no.please让我知道如何绕过这个。
**code here:**
double s=2.0;
double ku = Math.Pow(s, 1000);
double jlk = Math.Round(ku, 4);
这取决于我的逻辑,我只需要 1.0715 数字。
答案 0 :(得分:2)
你为什么围着它?无论如何它是一个整数。
using System;
// referencing System.Numerics.dll
using System.Numerics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
BigInteger bigInt = new BigInteger(2);
bigInt = BigInteger.Pow(bigInt, 1000);
Console.Out.WriteLine(bigInt.ToString());
}
}
}
答案 1 :(得分:0)
Double val = 1.0715086071862673E+301
Math.Round(val / (10 ^ 297), 0) * (10 ^ 297))
答案是1.0715E + 301 ......
如果你想要它是1.0715,你会做
Double val = 1.0715086071862673E+301
Math.Round(val / (10 ^ 297), 0)
这样可行,但我想指出转换过程中的转换。 (另外,这是vb.net - 我不确定CType是如何转换为C#)
CType(CType((val / (10 ^ 297)) + 0.5, Long), Double) //Yields 1.0716
CType(CType((val / (10 ^ 297)), Long), Double) //Yields 1.0715
答案 2 :(得分:-1)
使用适当的类型,即BigDecimal,src Arbitrary-Precision Decimals in C#