是直接扔掉还是四舍五入
![]() | 1 1a7489 2024-05-13 11:05:22 +08:00 进一法,我们公司是收钱的 |
2 xiaoHuaJia 2024-05-13 11:06:35 +08:00 抹零让利消费者,我们是电商 |
![]() | 3 codeMore 2024-05-13 11:09:16 +08:00 尽量按分计算。别按元了。 |
4 munan56 2024-05-13 11:12:19 +08:00 统一按能接受得损耗计算。具体是 3 楼的例子 |
![]() | 5 ODESZA 2024-05-13 11:12:31 +08:00 我们是计算到小数点后六位,但是只显示两位,因为订单量大,财务要核账 |
![]() | 6 highFreqSurfer OP @codeMore 现在就是按分存的, 算比例的时候还是会有小数的 |
![]() | 7 lbunderway 2024-05-13 11:15:23 +08:00 国内就分 多币种就小数 |
![]() | 8 highFreqSurfer OP 好了, 老板让四舍五入 |
![]() | 9 agagega 2024-05-13 11:19:31 +08:00 via iPhone ![]() 国内银行好像是四舍五入,但还有一种舍入方法叫 ties to even (银行家舍入法):1.445 舍成 1.44 ,1.455 舍成 1.46 |
10 USCONAN 2024-05-13 11:23:41 +08:00 奇偶也叫四六入五成 |
![]() | 11 RoshanWu 2024-05-13 11:34:40 +08:00 ![]() 所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。 |
![]() | 12 xuelu520 2024-05-13 11:40:07 +08:00 四舍五入,多笔可能总数对不上,要考虑这个 |
![]() | 13 yolee599 2024-05-13 12:14:24 +08:00 via Android 不存小数,扩大倍数存整数,展示的时候除回来 |
![]() | 14 4Et5ShxMIq58n6Lr 2024-05-13 14:07:42 +08:00 我这是按分计的,展示的时候处理一下 |
![]() | 15 3IOhG7M0knRu5UlC 2024-05-13 14:30:32 +08:00 有人知道银行用什么吗? |
![]() | 16 miaotaizi 2024-05-13 14:36:39 +08:00 @highFreqSurfer 老板的答案才是标准答案 |
17 wowcz 2024-05-13 14:45:34 +08:00 via Android 多存几个字段,该币种最小单位的数值,比如人民币就是分,还有币种,按需求计算和格式化 |
![]() | 18 ytmsdy 2024-05-13 14:54:50 +08:00 最最最原始订单里面的信息,直接到分为止。至于算折扣的时候,要不要四舍五入,还是直接舍弃,和业务确认,最好系统里面都用一套处理逻辑,别收钱的时候+1 ,退钱的时候-1 。 对了,最好用 decimal ,别用 double 或者 float ,要不然你对账的时候,差个 1 分钱,两分钱的,财务会天天追在你屁股后面然给你个解释的。 |
![]() | 19 reayyu 2024-05-13 14:56:21 +08:00 via Android 前审计狗,按照财务那套来说,一定是保留两位小数。其实更多的情况下是前台显示 2 位小数,其实数字是保留大于 2 位小数,最后做底稿的时候是需要挤 rounding 的。 |
![]() | 20 highFreqSurfer OP @ytmsdy 现在金额是用整型存的, 单位是分, 算抽成的时候存在小数, 老板让四舍五入, 现在直接 math.round 完事了 |
21 linauror 2024-05-13 17:16:08 +08:00 @highFreqSurfer #20 如果想要整体能对的上,那就每笔都入库抽成(按你们自己的规则做取舍,四舍五入没问题),算整体抽成的时候是每一笔加起来,而不是算总数后乘以抽成百分比 |
![]() | 22 7911364440 2024-05-13 17:41:05 +08:00 long 类型,单位是分 |
![]() | 23 highFreqSurfer OP @linauror 现在就是每个商品都提前算好抽成的, 合计后能对得上 |
![]() | 24 wellerman 2024-05-13 19:34:00 +08:00 10 多年前直接乘 100 ,后来接触到传销和高利贷行业,就变成直接乘 10000 ,数据库用 bigint 。 |
![]() | 26 abccccabc 2024-05-13 20:42:27 +08:00 我做过公司的分佣结算,原先是四舍五入,老板不相信我,让另外一个同事同样做了一遍,他是舍去分后面的部分。结果是我的结算多分给会员几十块钱。 在当时,做项目时,没有任何人表态,我就按四舍五入的做了。结果所有人都给我一个鄙视的眼神。还和那个同事闹得挺不愉快,你舍掉分后的部分也不说下,立项时也没人反对,对不上数了,一堆事后诸葛亮出来说话。 |
![]() | 27 lisxour 2024-05-14 10:56:53 +08:00 ![]() @highFreqSurfer #6 看你是哪一方,但不管哪一方都应该让利给另一方(避免让别人逼逼赖赖),自己吃亏,比如你是给钱的,进一,你是收钱的,抹掉 |
28 flmn 2024-05-15 09:51:22 +08:00 BigDecimal 有现成的银行家舍入。 |
![]() | 29 highFreqSurfer OP @flmn 什么语言 |
30 flmn 2024-05-21 10:15:28 +08:00 @highFreqSurfer Java 啊 |