V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
evilboy
V2EX  ›  问与答

一个简单的数学问题

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

    如果看作两个独立事件,那么当第一步舍弃精度时,就已经决定了后续不可能完美还原。如果确实有必要,可以考虑使用分数,但这会导致系统很复杂。
    GuuJiang
        6
    GuuJiang  
       2021-09-24 11:26:23 +08:00 via iPhone
    又见 XY 问题,请直接说出你的原始需求,盲猜需要的是个符号运算系统
    zhuawadao
        7
    zhuawadao  
       2021-09-24 11:57:43 +08:00
    如何得知( 3.34 或 3.334 )是商不是商
    jifengg
        8
    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
        9
    Jooooooooo  
       2021-09-24 13:05:49 +08:00
    Not a math problem.
    pangchaoran
        10
    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
        11
    bk201  
       2021-09-24 13:39:35 +08:00
    就是 1/3 怎么表示的问题
    ipwx
        12
    ipwx  
       2021-09-24 13:42:36 +08:00
    1. 用符号、分数参与运算。
    2. 浮点数最后做舍入。反正你本来系统里面任何小数都不精确,输出的时候也要舍入。
    goool
        13
    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
        14
    kop1989  
       2021-09-24 13:48:07 +08:00
    这个问题并不是数学问题,因为除并约等于之后,就丢失了信息。
    此时 3.34 对应着不止一个被除数和除数的组合。

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

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

    展示用前一个属性, 运算的时候用后一个属性?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2670 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:41 · PVG 17:41 · LAX 01:41 · JFK 04:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.