我需要做一些计算分数,结果有无限小数。 例如:存储无限小数C#
240/360=0.666666...
输出具有无限小数时,我乘这个由整数的结果必须是整数。所以我编写这样:
result = someInteger * decimal.divide(240/360);
(与someInteger = 2700尝试),但结果具有十进制值和一些计算器,甚至会输出一个整数电子表格。 如何在c#中获得相同的结果?
感谢
我需要做一些计算分数,结果有无限小数。 例如:存储无限小数C#
240/360=0.666666...
输出具有无限小数时,我乘这个由整数的结果必须是整数。所以我编写这样:
result = someInteger * decimal.divide(240/360);
(与someInteger = 2700尝试),但结果具有十进制值和一些计算器,甚至会输出一个整数电子表格。 如何在c#中获得相同的结果?
感谢
输出有无限小数,当我乘以整数时,结果必须是整数。
这不会真的发生。
你可以做的是仔细舍入(乘法之后)。
或代替
result = someInteger * decimal.divide(240/360);
可以使用
result = someInteger * 240/360;
与什么问题?
当你即将与分数的工作和保持精度,你需要一种特殊类型很严重的:
struct Rational
{
public readonly int Numerator;
public readonly int Denominator;
// lots of members, including operators
}
有libraries and examples如何做到这一点。
但请注意,您仍然无法准确表示π。
在你的建议(结果= someInteger * 240/360;)什么操作具有更高的优先级?或者哪个会先执行? –
从左到右...... someInteger * 240,然后是对那个/ 360的答案。 –
我注意到,当然,如果你想要的话,你可以完全代表pi,*只是没有整数有理数据库*。 –
使用Math.Round()
result = someInteger * decimal.divide(240/360);
result = Math.Round(result);
返回一个整数是你问做对了什么?
我不想整数结果,我只想知道输出是否实际上是一个整数 –
所以你想方法返回一个真/假的语句,如果它是一个整数?因为这完全不是你的问题所指出的。 –
是的,实际上我正在工作的代码做了这样的比较,但我的问题是这个operatin –
许多应用程序通过进行中间计算来执行伪分式数学,其精度比最终需要/输出给用户的要高(Office是这样做的)。如果这不是你想要的,并且你想要执行真正的分数学,那么搜索一下Fractions实现。似乎有一个体面的执行here。这种实现的问题是,责任在功能上是正确的,而不是高效的。因此,如果您的应用程序需要使用分数执行数百万次操作,则其性能可能会受到影响。
你想四舍五入或截断吗?尝试将结果转换为像这样的'var myIntResult =(int)结果;' – PostMan
舍入或截断不会让我操作返回一个整数,这就是事实上我正在尝试做的事情。 –