我需要对分数进行一些计算,结果具有无限小数.例如:
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)
有如何执行此操作的库和示例.
但请注意,您仍然无法准确表示π.