gpt4 book ai didi

c# - 为什么math.cs中常量double PI在点后分配20个字符?

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:47 27 4
gpt4 key购买 nike

为什么在math.cs中数字Pi被分配给double类型?
常数 PI 3.14159265358979323846 包含点后 20 个字符。
double 类型只能输出其中的 14 个。为什么要这样做?

// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: Math
**
**
** Purpose: Some floating-point math operations
**
**
===========================================================*/
namespace System {

//This class contains only static members and doesn't require serialization.
using System;
using System.Runtime;
using System.Runtime.CompilerServices;
using System.Runtime.ConstrainedExecution;
using System.Runtime.Versioning;
using System.Diagnostics.Contracts;

public static class Math {

private static double doubleRoundLimit = 1e16d;
private const int maxRoundingDigits = 15;

// This table is required for the Round function which can specify the number of digits to round to
private static double[] roundPower10Double = new double[] {
1E0, 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, 1E7, 1E8,
1E9, 1E10, 1E11, 1E12, 1E13, 1E14, 1E15 };

public const double PI = 3.14159265358979323846;
public const double E = 2.7182818284590452354;

最佳答案

Why in math.cs the number Pi is assigned to the double type?

从根本上说,常量必须以某种数据类型存储。

double 是精度最高的数据类型之一 ( of the standard C# data types )。唯一的其他竞争者是十进制,并且由于 PI 的“精确”值通常不相关(更不用说 - 不能表示为非无限空间中的数字),双倍更合适。

The constant PI 3.14159265358979323846 contains 20 characters after the point. Type double can output only 14 of them. Why is this done?

与数字太少相比,数字太多总是更安全。也许在您的系统上只有 14 位数字被置换和/或存储,但现在或将来的其他系统可能会重新定义 double 以使其更精确。编写的代码允许一定程度的向后兼容性以适应 future 。

正如@René Vogt 所指出的,Math.PI.ToString("G20") 例如返回了 16 位数字。

关于c# - 为什么math.cs中常量double PI在点后分配20个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49386272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com