存储无限小数C#

Jor*_*ata 0 c# math decimal

我需要对分数进行一些计算,结果具有无限小数.例如:

240/360=0.666666...
Run Code Online (Sandbox Code Playgroud)

输出具有无限小数,当我将其乘以整数时,结果必须是整数.所以我用这种方式编码:

result = someInteger * decimal.divide(240/360);
Run Code Online (Sandbox Code Playgroud)

(尝试使用someInteger = 2,700)但结果有十进制值,一些计算器甚至电子表格都会输出整数结果.如何在c#中获得相同的结果?

谢谢

Hen*_*man 12

输出具有无限小数,当我将其乘以整数时,结果必须是整数.

那不会真的发生.

你可以做的是仔细舍入(乘法后).

或者代替

 result = someInteger * decimal.divide(240/360);
Run Code Online (Sandbox Code Playgroud)

您可以使用

 result = someInteger * 240 / 360;
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

当你非常认真地使用分数并保持精度时,你需要一种特殊的类型:

struct Rational 
{
  public readonly int Numerator;
  public readonly int Denominator;

  // lots of members, including operators
}
Run Code Online (Sandbox Code Playgroud)

有如何执行此操作的库和示例.

但请注意,您仍然无法准确表示π.

  • 我注意到你当然可以准确地代表pi,如果你想,*只是没有一个整数有理数的库*. (5认同)