Re: [心得] 跟 PM 谈需求谈到快崩溃

楼主: ejsizmmy (pigChu)   2019-01-29 11:54:22
最近有人在分享这个文章,
原本当作看笑话的我,回头审视了一下里面的内容,突然有另一个层面的看法.....
毕竟也是软件方面的心得,那就来分享一下吧.......
※ 引述《cyclone350 (老子我最神)》之铭言
: 纯抱怨
: PM 提了一个打折需求,我需要知道若商品打折后有小数点是如何进位
: 1. 四舍五入 2. 无条件进位 3. 无条件舍去
: 以下是我们对话 (我简称为 XXX)
: XXX: 请问商品打折后如果不是整数的话要怎么进位?
: 如果你没想法的话,我建议无条件舍去
: PM1: 为什么商品打折后不会是整数? 应该都要是整数阿
在某些编译器及语言中,
如果一开始储存的变量是以整数宣告的,没有经过特殊处理或是指定时,经过小数计算
之后仍然会以整数为储存数值
举例而言:
c语言为例
float aa=2.4;
float bb=2.6;
int a=aa*10
int b=bb*10
此时结果的a会是24,而b则会是25
至于为什么会有这种结果,
原因在于float bb储存的值实际上趋近2.5999999,取整数时25.999会被直接舍去小数点
变成25
这些例子有很多,但是对于系统上数量一多起来差异其实非常大,不能不小心
曾经有颗火箭就是这原因栽掉的......
另外就是重要的结论,float跟double在部分数值上表现时都是近似值,不是真正的数值
...避免这问题就要从浮点数本身储存格式注意,避免掉非二进制小数点形成的问题
回到这个问题本身,
如果我单纯原本储存的就是整数,不管怎么算这个东西会自动帮忙存成整数.....像是上
面就这样....
: XXX: 什么?
: XXX: 为什么是 80 元?
: PM1: 不是,应该是 20 元吧?
: PM2: XXX,到底是 80 元还是 20 元啊?
: XXX: 啥? 打折是什么意思之前没有共识吗?
: PM2: 当初的结论是什么?
: XXX: (讲一下打折是什么意思)
: PM1: 不对阿,那这样我要卖 20 元,我打八折后不是 20 元,我要怎么卖?
: XXX: 你可以定价设 20 元
: PM1: 是这样吗? 会不会我卖 20 元后打八折就不是卖 20 元
: XXX: ...?
: PM1: 这样 20 元的商品打八折后就变 16 元,不是 20元
: XXX: 对阿,然后?
: PM1: 可是我要卖 20 元阿
: XXX: 那你就不要设定打折阿
: PM1: 那我要打折又要卖 20 元的话怎么办
: XXX: (无视) 既然大家都知道打折的意义,
: 那现在可以让我知道 39 元的商品打八折要卖几元吗?
其实真正从从商业角度上来看,“打折”并不是这么简单的。打折不是单单以“单价多
少,售价打折就是多少”的直观概念去设计,反而更会以“我打算卖多少钱,那那个商
品的售价就是多少钱”才对,
举例而言,
我想卖一个进价成本为50元的商品售价为90元(利润要40元),销售策略上必须要使定
价打完八折为90元为标示,也就是说我固定某个利润或是售价,另外计算打折前的定价
,这样比较符合某些销售策略,
也就是X*0.8=90,此时的X就是目标定价
最后的结果会是X=0.8/9.........
更长远的设计,从进价成本去做获利运算,目标利润设在30%时,假设进价是in 售价是
out
1.3*in=0.8*out
上面就是基本的售价模型,
更进一步设计,里面的1.3的0.3跟8折的0.8是可以使用者自己设定的,这样才是一个面
向客户导向设计的一个模型,不是单单用“啊我打八折就是原本多少打八折就好了呀”
,因为商业中只会有成本、售价跟利润是最终计算结果,定价最多是短暂的、不稳定的
一个参考值而已....
: PM2: 这问题很复杂,上次我去饮料店点了一杯红茶,你知道怎么样吗?
: XXX: 不知道
: PM2: 我跟他说我要加珍珠,他要多收我 5 元
: XXX: 然后?
更深的探讨,加值服务或是类似游戏的DLC这种东西,都有它一定的意义跟计算方式,
我猜想,像是Steam平台那样,可以一款游戏打八折,一款游戏加补充包打七折仍然能稳
定获得可观利润.....
珍珠奶茶的珍珠成本3块钱,但是另外加5元的珍珠量的成本可能是4块,椰果是4块5...
PM可能没想这么远啦,但是今天我重新想了一次这两个小问题,感觉有更深的意义....
毕竟客户的需求,往往不是这么简单,不是吗?
作者: grief3 (^^~)   2019-01-29 12:08:00
软件是工具 客户的需求要怎么满足是规格 两个混在一起?
作者: chuegou (chuegou)   2019-01-29 12:10:00
意义好深喔 看无
作者: grief3 (^^~)   2019-01-29 12:10:00
比较正确的分工应该是那些需求PM间经过充分讨论后订在规格而不是拉软件工程师进来一起发散讨论
作者: IhateOGC (我讨厌)   2019-01-29 12:20:00
PM: 所以你能做到客户需求吗?客户就是想打折PM : 不就是乘法吗?连我不会写程式的都会
作者: rice0617 (LittleRice)   2019-01-29 12:27:00
太看得起台湾的PM惹
作者: pttworld (批踢踢世界)   2019-01-29 12:45:00
实际的公式是SD补充SA文件写的,PM仅止于要打折而已
作者: motherboard (妈的Ball)   2019-01-29 12:46:00
之前被ieee754搞死 某些语言逻辑运算会出事...
作者: pttworld (批踢踢世界)   2019-01-29 12:46:00
如果不是上述的配置,只能说专案人太少
作者: Wishmaster ( )   2019-01-29 13:40:00
珍珠多收五元,然后? XDDDDDDDDDDDDD
作者: gary75952 (MaRs)   2019-01-29 14:23:00
想太多。浮点算钱 一个基本工程师都会注意的东西。工作上 最讨厌的往往是那些故意把很简单的事情复杂化的搞得好像贡献很高一样
作者: MOONY135 (谈无欲)   2019-01-29 14:52:00
PM:不就是打折 我把公式列给你 自己按计算机
作者: motherboard (妈的Ball)   2019-01-29 14:59:00
突然发现这个版好多人会把工作的情绪带入讨论 XD到底职场是有多不顺阿..
作者: MOONY135 (谈无欲)   2019-01-29 15:01:00
我觉得你把行销该做的事情做掉了 那些计算是他要算的定售价的部分你开放给他自己修改 打折的部分你也开放中途的那些计算不是软件工程师该讨论也该做的你思考成虾皮的折价卷系统就可以了 一堆卖家都自己调高售价
作者: a47135 (金属史莱姆)   2019-01-29 15:13:00
其实就折数和折后数字让使用者自订就好了
作者: Ninja5566 (苦味)   2019-01-29 22:51:00
我怎么记得火箭出事是因为溢位而不是小数点舍去
作者: THEWORLDS (天下)   2019-01-29 23:27:00
火箭那个是因为溢位没错 小数点没精算曾经被用来在股赚钱 很多吸血虫也利用程序员的粗心去各大赌博平台刷钱
作者: anandydy529 (AndyAWD)   2019-01-29 23:54:00
"PM间经过充分讨论"你知道这样出现的需求会多可怕吗
作者: vn509942 (如履薄冰)   2019-01-30 02:23:00
小数点没处理好精算 换汇跟放贷拆帐就准备脱裤子
作者: toothlesses (toothless)   2019-01-30 09:38:00
推 的确从这个角度写或许会好一点
作者: alice78226 (紫)   2019-01-30 12:05:00
前公司针对小数点rounding的问题,要求会计每个月人工编表,调整数据库与实际数的尾差,交易金额如果大,类加差异会到数十元。
作者: moom50302 (武林三羚鳄)   2019-02-07 11:16:00
以做过专案角度来说PM太发散,工程师也没有把额外的责任适当地推掉

Links booklink

Contact Us: admin [ a t ] ucptt.com