【问题标题】:Limited calculations in C#C# 中的有限计算
【发布时间】:2021-07-12 07:16:35
【问题描述】:

我需要在 c# 中为我的项目进行高级计算。例如,计算最多 10 位或 12 位的小数位。但问题是 c# 最多只能计算 6 位数字。 或者无限显示非常大的数字。例如乘以加倍。 有什么办法可以改变这些限制吗? 谢谢

比如我想用 1 除以 3。c# 中的结果是 0.333333。只有 6 位十进制数字。但我需要 0.3333333333 之类的 10 位十进制数字。 这个问题甚至存在于变量的设置中。即c#中小数点后10位的小数变成小数点后6位的数。

【问题讨论】:

  • 使用来自System.NumericsBigInteger。但是如何用于计算小数位呢?这是给你的。
  • 也许你可以告诉我们更多关于你想做的计算。 C# 有许多不同的值类型可供您使用..
  • @Aldert:OP 要求的内容非常清楚,大多数内置类型都无法实现。
  • C# 中的Decimal 类型使用的位数比这多得多。您没有正确显示它。
  • @ArnoldZahrneinder 但可以通过some来实现。 大多数类型不一定支持它,只要其中一个支持它就足够了,System.Double 或只是double 支持 10 位精度(实际上甚至更多),System.Decimaldecimal 也是如此。

标签: c# operators calculation


【解决方案1】:

您可以使用decimal 作为类型。在数字后使用m。以1/3m 为例。

【讨论】:

    【解决方案2】:

    双倍就足够了

    double myDec;
    myDec = 1.0 / 3.0;
    Console.WriteLine(myDec);
    

    这显示你:0.333333333333333

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types

    小数到 28 位

    【讨论】:

      【解决方案3】:

      您可以选择 System.Double 或 System.Decimal 进行计算。 Double类型支持17位精度,Decimal支持28位。

      如 Docs 中所述,Decimal 是 .net 中最精确的浮点类型。

      Decimal 值类型适用于满足以下条件的财务计算 需要大量有效整数和小数位数 并且没有四舍五入的错误。 Decimal 类型并没有消除需要 用于四舍五入。相反,它最大限度地减少了由于四舍五入引起的错误。为了 例如,以下代码产生的结果是 0.9999999999999999999999999999 而不是 1。

      详情请参阅文档。它可以用例子很好地解释它: https://docs.microsoft.com/en-us/dotnet/api/system.decimal?view=net-5.0

      【讨论】:

        猜你喜欢
        • 2013-04-16
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        • 2011-11-30
        • 2011-07-06
        • 2019-06-20
        相关资源
        最近更新 更多