【发布时间】:2012-11-27 13:44:35
【问题描述】:
我试图将一个数字分成多个部分,以便部分的总和等于输入的数字。
如果我有 3.99,如果我需要分成两部分,那么预期的输出是 2 和 1.99 (2+1.99=3.99)
如果我需要将 3.99 分成 3 部分,则预期输出为 1.3、1.3 和 1.39 (1.3+1.3+1.39=3.99)
对于第一个示例,我能够输出 2.99 和 1,对于第二个示例,我能够得到 1.99、1 和 1。然而,在这两种情况下,结果都与预期的输出相差甚远。
我需要将邮政费用拆分为单独的行项目。结果可以等分或不等分,同时确保不同部分的总和等于输入的数字。
这里有一些其他的例子:
3.99 divided in 3 parts: 1.33, 1.33, 1.33
3.98 divided in 3 parts: 1.33, 1.33, 1.32
3.97 divided in 3 parts: 1.32, 1.32, 1.33
3.96 divided in 3 parts: 1.32, 1.32, 1.32
3.95 divided in 3 parts: 1.32, 1.32, 1.31
【问题讨论】:
-
为什么不把3.99分成3部分改为1.33、1.33、1.33呢?
-
“但在这两种情况下,结果都与预期的输出相差甚远”——它有何不同?你尝试了什么?预期的结果是什么? What Have You tried?
-
@Naresh 为什么不
1.32, 1.32, 1.33? -
我认为这是一个非常好的问题,只是表达的不是很清楚。我认为纳雷什想要做的类似于在餐馆分摊账单。您希望平均分配价值,但不能收取低于 0.01 的价值——因此在某些情况下,一个人的收费比其他人多/少 0.01。
-
@Naresh 你的例子现在更清楚了,但是你的
3.95和3.98的例子是不一致的——一个你有x, x, x+0.02,另一个你有x, x+0.01, x+0.01。是否有理由对这些进行不同的处理,例如你更喜欢“偶数”?
标签: c#