C# 将一个数字分成相等的部分,然后将其相加,得到相同的数字
我需要在c#中实现一个逻辑,在这里,我需要将它拆分并添加到一起,以获得相同的值 例如: 1.0/6.0442137639369475=0.16544749061764519 当我加上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。如果这不够精确,我怀疑,您仍然可以搜索更精确的实现。如果我猜您的问题正确,您需要进行以下
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,这永远不会,因为如果你把它加起来,它在数学上与整数相乘是一样的,而原来的除法器不是整数