C# 将一个数字分成相等的部分,然后将其相加,得到相同的数字

C# 将一个数字分成相等的部分,然后将其相加,得到相同的数字,c#,split,numbers,decimal,C#,Split,Numbers,Decimal,我需要在c#中实现一个逻辑,在这里,我需要将它拆分并添加到一起,以获得相同的值 例如: 1.0/6.0442137639369475=0.16544749061764519 当我加上 0.16544749061764519+0.16544749061764519 使其成为1.0根本不起作用 0.99268494370587 不完全是1.0 我不确定我遗漏了什么…?尝试使用更精确的数据格式。试着用double。如果这不够精确,我怀疑,您仍然可以搜索更精确的实现。如果我猜您的问题正确,您需要进行以下

我需要在c#中实现一个逻辑,在这里,我需要将它拆分并添加到一起,以获得相同的值

例如:

1.0/6.0442137639369475=0.16544749061764519

当我加上


0.16544749061764519+0.16544749061764519

使其成为1.0根本不起作用

0.99268494370587

不完全是1.0


我不确定我遗漏了什么…?

尝试使用更精确的数据格式。试着用double。如果这不够精确,我怀疑,您仍然可以搜索更精确的实现。

如果我猜您的问题正确,您需要进行以下计算:

c=a/b

d=c+c+c+…
n次,直到
a==d

只有当您对
a
b
使用整数,而实数6.0442137639369475作为
b
时,这才有效(数学定律afaik)

顺便说一下:

您的除法结果
0.16544749061764519
已四舍五入!正确的结果是
0.16544749061764518326

因此,您可能需要另一种数据类型。

您所说的“将一个数字分成相等的部分”到底是什么意思?请至少显示6个输入和输出示例,以明确您的期望。
1.0根本不起作用,它是0.99268494370587,而不是1.0。
这是指什么?听起来好像你已经有一些代码了?如果是这样,请将您的代码包括在帖子中。0.16544749061764519+0.16544749061764519是0.3308949898123529038为什么您应该得到1?当您将0.16544749061764519添加到自身时,它将等于1.0。。。6.0442137639369475[…]次。当op被0.16544749061764519+0.16544749061764519不等于1.0的事实所困扰时,我不确定精度是否是问题。根据他使用的标记,我认为他使用的是十进制格式,并试图将一个数字除以x。然后,他试图将结果乘以x,结果应该是他除以x的值。因此,不是仅仅0.16544749061764519+0.16544749061764519,你认为他是将0.16544749061764519加到自己的6.0442137639369475倍吗?:-)@斯波杰:不,他加了6次-(这正好是他的0.99…我不知道预期的数学应该是什么意思make@casiosmu是的,确实是这样。尽管如此,我仍然不太清楚问题出在哪里。:-)即使我加上这些值0.16544749061764518326,结果是0.99268494370587113,当然不是1.0,这永远不会,因为如果你把它加起来,它在数学上与整数相乘是一样的,而原来的除法器不是整数