如何在.net中使用math.round()

时间:2014-03-04 08:57:09

标签: c# math

我试图将小数点后的四舍五入到四位小数。小数以下是

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 数字。

3 个答案:

答案 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)

Additonally

这样可行,但我想指出转换过程中的转换。 (另外,这是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#