用于物理和数学常量的库以及c#.net中的基本转换

Library for Physical and mathematic constants and basic conversions in c# .net

我看到了,由于c中的Math.PI,我们可以得到π的值。

您知道是否存在一个库或包来获取其他著名常数的四舍五入值,例如,阿伏伽德罗常数、开尔文常数、普朗克常数、库仑常数、金数常数、牛顿常数?

如果我们能做些简单的兑换,那就太好了。

在另一个世界:对科学来说是一个轻松的时刻,它可以为很多人节省很多时间。

  • 顺便说一下,Math.PI不是π。我是3.14159265358979323846
  • 为什么这个问题有这么多赞成票?这是一个质量很低的项目,没有任何研究费用。
  • 当然,这是一个很多人都想拥有的功能,但不敢问这个论坛是否存在,因为他们害怕像你这样的人投反对票。
  • @希布罗姆比想在这个没有任何研究负担的问题上看到许多赞成票吗?参见红宝石中的开关
  • @托马斯·奥奇,是的,你是对的。不过,这很烦人。
  • @Thomas@Himbrombere我在论坛上搜索并找到了这篇文章,但我希望它的存在比写我自己的课更有用。也许它存在一个软件包,一个你不知道的图书馆,在这个有用的论坛上以前没有人问过这个问题。我不是唯一一个期望得到更有用答案的人
  • 在使用rahuls方法编写自己的类时,您到底有什么问题?那么,你就不依赖于外部资源,这可能是一件大事,取决于你公司或组织的限制。无论如何,寻找库和工具是不合适的,因此这个问题可能会被解决。
  • @托马斯(你的第一条评论)你引用的数字比一个double更接近真π。似乎Math.PI是一个double等价于7074237752028440 / 2**51。由于分子可以被8整除,所以是884279719003555 / 2**48。十进制扩展从3.14159265358979311599796346854418516开始。Math.PI.ToString("G17", CultureInfo.InvariantCulture)给了"3.1415926535897931"
  • @Himbrombere这不是问题,但举个例子,我喜欢图书馆的妈妈做我自己能做的事情。也许它可能存在一个包,允许我在参数中选择几个解决方案或不同的截断
  • @Jeppestiginelsen我让你告诉微软,因为这是他们写的
  • @托马斯,哦,微软刚刚把有很多额外数字的pi放进了他们的源代码中,这很好。他们可以确保获得尽可能最好的double,所以这是他们能做到的最好的。然而,并非所有的数字都是在你写一个"长"的double字时使用的。


正如他已经提到的,您可以使用const关键字来存储常量值。您还可以看到这篇文章:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Physical Constants in cgs Units

// Boltzman Constant. Units erg/deg(K)
public const double BOLTZMAN = 1.3807e-16;

// Elementary Charge. Units statcoulomb
public const double ECHARGE = 4.8032e-10;

// Electron Mass. Units g
public const double EMASS = 9.1095e-28;

// Proton Mass. Units g
public const double PMASS = 1.6726e-24;

// Gravitational Constant. Units dyne-cm^2/g^2
public const double GRAV = 6.6720e-08;

// Planck constant. Units erg-sec
public const double PLANCK = 6.6262e-27;

// Speed of Light in a Vacuum. Units cm/sec
public const double LIGHTSPEED = 2.9979e10;

// Stefan-Boltzman Constant. Units erg/cm^2-sec-deg^4
public const double STEFANBOLTZ = 5.6703e-5;

// Avogadro Number. Units  1/mol
public const double AVOGADRO = 6.0220e23;

// Gas Constant. Units erg/deg-mol
public const double GASCONSTANT = 8.3144e07;

// Gravitational Acceleration at the Earths surface. Units cm/sec^2
public const double GRAVACC = 980.67;

// Solar Mass. Units g
public const double SOLARMASS = 1.99e33;

// Solar Radius. Units cm
public const double SOLARRADIUS = 6.96e10;

// Solar Luminosity. Units erg/sec
public const double SOLARLUM = 3.90e33;

// Solar Flux. Units erg/cm^2-sec
public const double SOLARFLUX = 6.41e10;

// Astronomical Unit (radius of the Earth's orbit). Units cm
public const double AU = 1.50e13;

It would be great if it would exists a a package, a library or a
native class for that

因此,没有可以使用的库或本机类。最好是将上述常量包含在单独的类中,然后使用它。

  • 在http://physics.nist.gov/cuu/constants/上可以找到更精确的数值和国际单位制单位(如果首选)。例如,波尔兹曼常数(上面拼写错误)是以焦耳为单位的1.38064852e-23。这一页给出了不确定性。
  • 这是一个很好的答案,谢谢张贴。但如果明天我没有,我会把它标为安莎尔的,那就太好了,而且仍然希望有一个包裹或一个图书馆。


您可以为此使用const关键字:

1
2
3
class MyClass {
    public const double KELVIN = -273.15;
}

现在使用MyClass.KELVIN访问它。

但是,根据计算所需的精度,您可能需要不同的数据类型,例如decimalfloatdouble

这些常量不存在库,因为这些常量具有非常不同的方面,目前还没有一个库可以包含这些常量。但是,您可以通过将它们添加到类中并在Github上发布来实现。

  • 为什么最后是四位数呢?与摄氏度/摄氏度相比,偏差为273.15。定义WRT。水的三重温度是273.16(因此三重点正好是+0.01摄氏度)。
  • @是的,我以为是-273,14