20+10%=?

2019-09-02 15:13:14 +08:00
 secsilm

22 ?这怎么算的?

17571 次点击
所在节点    程序员
192 条回复
DiamondbacK
2019-09-03 13:36:57 +08:00
@Yvette
再明确点吧,非形式语言和数学语言不能相提并论,比如说你的维基例子中的
「... = 0.04, and then multiply by 100 to obtain 4%....」
但他绝不是
0.04 * 100 = 4%
的意思,连这个楼里其他你的赞同者,大部分都不会有这个意思。
bleaker
2019-09-03 13:44:47 +08:00
如果有在西方(尤其是有小费习惯的某英制单位国家)生活经验的话就肯定不会觉得这是个 bug... 明显的 feature 啊,一个计算器,最常见的场景就是各种算打折和小费,其他还有什么单位转换、汇率转换之类的都会做到计算器里,input 不是一个纯数学表达式,而是用数字表示一个场景,再智能点的你写个 $1 + €3 + 15% 人家也也能帮你算出来
mayuko2012
2019-09-03 13:46:13 +08:00
@across #12 太强了!
FrankHB
2019-09-03 13:49:49 +08:00
@Yvette 你给的链接说的是算术运算,那句话是指 and then multiply (the number in the ratio) by 100 to obtain 4% 而不是 and then multiply the ratio by 100 to obtain 4% 。
按你的理解,后者也是说不通的。
而作为数学表达式乘以 100 就明显不对,除非把 % 单独提出去。
把 % 隐藏的用法我提过是有的,得在最后再用 (%) 或另外说明表示清楚(这个用法 % 类似单位):
50/1250×100 = 4 (%)
但像你给的图里的 = 一边不用 % 而另一边用 % 不属于这种用法,反倒是你所谓的混用。
而且你给的链接的下文实际上说了,在计算中 % 不能乱加,否则实际的值就被凭空 /100。这里确定实际的值的计算,就用到了你所谓不能混用的纯数的比较。
所谓不能混用,恰恰就是为了避免这种错用的问题,而不是说这样写数学上没意义。不要本末倒置。
Yvette
2019-09-03 13:50:22 +08:00
@DiamondbacK 这个确实很反常识,因为我在国内高中以及之前受到的教育确实是百分数就是当成数字来用,虽然没有明确定义说就是这样,但大家好像潜移默化地都有这个倾向。然而我本科的时候在北美上的**所有**工科的课里确实是把小数乘以 100 而不是 100% 来得到百分数,我有点在意这个所以自己在作业里是写成 100%,而教科书和讲义里也确实都是 100。不过你说得对,你指出的那个说法有问题。

如果这样来看可能确实是不同地方的标注方式不同导致的,毕竟这个并没有一个明确的定义来把小数和百分数划等号或者划不等号;可能有具体定义,只是我们没找到。要是有具体的定义来讨论可能会比较明了了,不过现在来看应该就是北美(写出这个计算器的人所在的地区)的计算器上,拿百分数来表达小数会是有点问题的,这也与我自己的经验一致。
Yvette
2019-09-03 13:54:33 +08:00
@FrankHB 如 @DiamondbacK 指出,那个说法确实有误。猜测是 100 与 100% 表达方式的问题
cuixiao603
2019-09-03 14:03:42 +08:00
@pastgift #24
@winterbells #22
10%+10% =0.11 怎么解释
whp1473
2019-09-03 14:08:11 +08:00
小米计算器是 20+10%=20.1
lscho
2019-09-03 14:24:16 +08:00
看了标题就得出答案 22,难道我不对?
FrankHB
2019-09-03 14:30:24 +08:00
@Yvette 仍有理解偏差。“并没有一个明确的定义来把小数和百分数划等号或者划不等号”这个显然有问题。因为数学上这两者就不是并列关系。
数学上小数按进位制分数定义,而百分数作为整体就是定义为分母为 100 的比例(有理数),两者同属实数,后者是前者的真子集。这哪里能推出不能比较了?
你所谓的不能混用纯粹就是为了避免误用的习惯问题。非要混用只是看起来可能奇怪,不符合惯例,而不是数学上无意义的。反倒是你所谓的北美工科的课程材料里的习惯因为在一边少了%,违反了更一般的不混用的习惯。我怀疑这就是以讹传讹,根本没系统约定。
至于地区的标注方式没你说得那么笼统,区域相关的写法不同很多都是被标准化的,虽然也有明确的不同,大多依赖语言(像小数点,英语用“.”,法语用“,”)。
但据我所知,随意在数学表达式的计算中省略 % 不属于区域相关的约定。
至于这楼里讨论的计算器,实现的功能根本就不是表达式计算。我在另一个回复提过,让 UI 反馈看起来像是表达式而造成混淆,是 UX 上的失败设计。
kile
2019-09-03 14:32:52 +08:00
@cuixiao603

(1*10%) + (1*10%)*10% = 0.11

100+15% = (100+100*15%) = 115
cuixiao603
2019-09-03 14:34:43 +08:00
@kile #151 老哥看我 @的内容啊
sikariba
2019-09-03 14:39:29 +08:00
卡西欧 DH-12 按的也是 22,看来是计算器的一个 feature
Yvette
2019-09-03 14:53:06 +08:00
@FrankHB 我觉得是有标准化的,可能我们这种非专业人员没了解到已。况且,把百分数直接定义成了有理数的时候,那其实直接就可以得出结论这个 UX 上的决定在数学上就是错的,然而非也。按我目前的理解来说(至少在北美语境下)百分数更像是一个简化的表达方式而非一个数,这样来说那个计算器设计的合理性就可以解释得通。

我能想到的一个类似的国内外表达方式的差异一个情况可能是排列组合,国内的组合是用 C 加上下角标来表示,而美国是用括号 C(n, k) 来表示。
fuxiuyin
2019-09-03 15:03:39 +08:00
这个就是一个方便是用的需求,国外的打折、消费税、小费、服务费都是 xx%加减的,这就是个方便使用的特性,xx+xx%(服务费 /小费 /消费税),xx-xx%(打折之类的),国内没这个使用场景,所以国内的计算器都实现的是一般的 10%=0.1,国外的或者说偷懒没改直接搬过来用的的就用的是特殊实现版本。
fuxiuyin
2019-09-03 15:08:53 +08:00
写程序的时候,为了需求和方便使用,打破最开始设计的规则的事情还少吗?就是一个类似于你这定了一个完美的规则写完了程序以后,PM 给你来了一句“我要 xx ”,然后你在程序里面加了个 if 语句块= =。
FrankHB
2019-09-03 15:09:35 +08:00
@Yvette 计算器的 UI 本来就没那么严格的规则,大多数用户根本都不在乎这是不是表达式。然而工程计算不可能是这样,特别是还和更基础的普遍常识有冲突,所以就显得非常可疑了。排列组合这种写法本来就没那么基础和普遍,长期下来共存惯了也不会有那么多问题,而且根本上还是看具体作者的约定而不是地区习惯,不会想找依据都找不到。
irobbin
2019-09-03 15:15:59 +08:00
单独的 10%没有任何含义,100 的 10%还是 1000 的 10%,完全不一样。楼主自然而然的理解成 10%=0.1,一开始就是错的
winterbells
2019-09-03 15:24:09 +08:00
@cuixiao603 #147

看#158
DiamondbacK
2019-09-03 15:34:51 +08:00
@Yvette #154

我相信你并没有真的看到过任何例子支持「北美语境的数学中百分数不是数」,而且说这么多,好像数学是用例子来建立的, 但不是,要拿出定义,「百分数是什么?」。数的定义,百分数的定义,不可能在工程类教材中找,数学不以工程学为基础。

从数学教材到现在网络可查的资料,都明确定义是「百分数是数」「 percentage is number 」,更详细的:
In mathematics, a percentage is a number or ratio expressed as a fraction of 100.
number 就是数,ratio 也是数。
对,16:9 也是一个数。

表达方式的不同,是形式的不同,不能和内容相不相同混为一谈,数是内容,「数字」「比」「百分数」「代数符号( x, y, z)」都是形式,这些形式都是用来「表示」数这个内容的,它们全都不是数本身。1、2、3、4 都是「数字」,是「符号」,不是数。但是它们都是用来表示同一个数学概念——「数」的。

排列组合的表示形式不同,我们没问题,很容易理解,其形式的不同也从来不导致其中一种不再是排列组合。

顺便,排列组合也是「数」。

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

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

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

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

© 2021 V2EX