一个简单的数学问题

2021-09-24 11:02:04 +08:00
 evilboy
假如被"除数"10,除以"除数"3,采用进一法,等于 3.34 或者等于 3.334 。现在要让"商"( 3.34 或 3.334 )乘以"除数"3 的”积“等于”被除数“10,应该如何处理,是不是可以直接舍掉小数点后面的小数部分。对于文中的”10÷3=3.34 或 3.334“只是一个例子。我真正想问的是如何让”除不尽的数“被除后,使用”商“再乘以”除数“,使得结果”积“等于”这个除不尽的数“。
1828 次点击
所在节点    问与答
20 条回复
zxCoder
2021-09-24 11:07:52 +08:00
没听懂。。。。你是想解决这个“数学问题”?还是说是写代码怎么处理?那保存结果的分子分母?这样肯定是准确的
Vinty
2021-09-24 11:12:32 +08:00
用符号运算
deplivesb
2021-09-24 11:13:44 +08:00
你确定这个是数学问题么?
cmdOptionKana
2021-09-24 11:16:22 +08:00
根据具体目的灵活处理,会计专业肯定有处理
这些问题的约定俗成的方法。
cmdOptionKana
2021-09-24 11:20:49 +08:00
比如,要看你把这两部操作当作“总是前后发生的一个固定流程”,还是看成“两个独立事件,其中第二个事件可能发生,可能不发生,可能相隔久远才发生”。

如果看作两个独立事件,那么当第一步舍弃精度时,就已经决定了后续不可能完美还原。如果确实有必要,可以考虑使用分数,但这会导致系统很复杂。
GuuJiang
2021-09-24 11:26:23 +08:00
又见 XY 问题,请直接说出你的原始需求,盲猜需要的是个符号运算系统
zhuawadao
2021-09-24 11:57:43 +08:00
如何得知( 3.34 或 3.334 )是商不是商
jifengg
2021-09-24 12:06:03 +08:00
数学问题:“等于 3.34”这里应该是“约等于 3.34”,丢失了精度了。用一个“约等于”的数,没法得到一个“等于”的数。你怎么知道 3.34 是由 3.335 还是 3.333 还是 3.332 约来的呢。
数学解法:10 除以 3 不表示为 3.34 ,表示为 3⅓
Jooooooooo
2021-09-24 13:05:49 +08:00
Not a math problem.
pangchaoran
2021-09-24 13:32:17 +08:00
已知: C=A/B
C1=ceil(C1,1e-3)
求 f, 使得 A=f(C1,B)
以上是你的需求吧?

由于 abs(C1-C)<1e-3,
故 abs(C1*B-A)=abs(C1-C)*B<(1e-3)*B
再加上 C1>>1e-3
故 A=round(C1*B,(1e-3)*B)
如果 B 有上限, 可以用(1e-3)*上限 作为 round 的精度

以上, 不严格想法. 需要测试
bk201
2021-09-24 13:39:35 +08:00
就是 1/3 怎么表示的问题
ipwx
2021-09-24 13:42:36 +08:00
1. 用符号、分数参与运算。
2. 浮点数最后做舍入。反正你本来系统里面任何小数都不精确,输出的时候也要舍入。
goool
2021-09-24 13:46:50 +08:00
增加一个 “内部表示” 的概念,把所有需要参与运算的数都用 “有理数” 来表达。只在需要数值的时候,才把它计算出来,不能表示为整数的,按需要精确的位数与舍入规则来确定。

具体到你的问题:
将 10 的内部表示记作 (10, 1),类似地,3 的内部表示,就是 (3, 1)
10 除以 3,就是 (10, 1) / (3, 1),做有理数除法,得到 (10, 3)
(10, 3) 乘以 3,就是 (10, 3) * ( 3, 1),做有理数乘法,得到 (10, 1)
kop1989
2021-09-24 13:48:07 +08:00
这个问题并不是数学问题,因为除并约等于之后,就丢失了信息。
此时 3.34 对应着不止一个被除数和除数的组合。

你怎么知道你最终想要的被除数是多少?
stirlingx
2021-09-24 13:52:36 +08:00
这是一个 model 和 view 的问题,10/3 是 model,3.34 是 view,一个 model 可以有多个 view
VictorJing94
2021-09-24 15:38:51 +08:00
再给留个余数后面+上?
grimpil
2021-09-24 21:33:13 +08:00
10÷3=3.34 这一步肯定错了,只能用约等号。
evilboy
2021-09-24 23:34:18 +08:00
@grimpil 有说采用进一法
lixiang2017
2021-09-25 09:06:17 +08:00
GCD
volvo007
2021-09-25 12:41:19 +08:00
感觉严格操作的话, 不太可能还原回去, 进位的时候就已经损失信息了吧

感觉要不写个类, 一个属性放这个进一的结果, 另一个属性放符号计算结果

展示用前一个属性, 运算的时候用后一个属性?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/803860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX