gojira.net
2022年01月13日 星期四 农历二〇二一年腊月十一日 [牛年] 阳历辛丑年辛丑月丙寅日 魔羯座
今天4-11度,微晴。
今天又重新把原先折腾的股票自动交易整理修改了一下,准备拿出来用,以半自动形式运行,毕竟真金白银还不是很放心。
顺便又肝了一下python,在计算一些价格的时候,发现个有意思的问题:
在python里执行“四舍五入”的时候5不一定入。
比如执行
print(round(2.345,2))
print(round(2.355,2))
得到的结果都一样,分别是
2.35
2.35
然后在网上找了一些,有这么两个解释,也都差不多:
这不是bug,而是一种常见的舍入法,名称是“银行家式舍入法”, 用意是一半舍一半入,如果碰到0.5全入,那么银行觉得自己亏了,
银行希望和用户要风险对半。不光Python,其他的计算机语言都是这个方法f7cc6fc9
例如C语言和Basic语言。其实不只是计算机科学,在科学实验的数据处理中,也是采用这种舍入法。python3中round()函数对浮点数的取舍遵循的是“四舍六入五平分”,“五平分”就是根据取舍的位数前的小数奇偶性来判断,奇偶平分,符合公平性原则(四舍五入不是公平的),这样一来也就保证了在数据量较大的情况下,筛选数据的真实性。
当时我还觉得这样才公平但,但又有点不信,其他语音都是这样?赶紧在世界第一语言里测试一下:
echo round(2.335,2)."n";
echo round(2.345,2);
得到的结果分别是:
2.34
2.35
完全没问题啊,真是服了这些人,还说的恰有其事似的。
但后来我测试其他数字,又是四舍五入了,比如执行:
print(round(1997.345,2))
print(round(1997.355,2))
得到结果分别是
1997.35
1997.36
说明有没问题。
接着又测试
print(round(1997.435,2))
print(round(1997.445,2))
结果:
1997.43
1997.44
我凌乱了……
搞不懂了,可能和机器码、二进制有关?
又凌晨了,不研究了……
2022年01月13日股票亏盈情况
股票名 | 股数 | 今涨幅% | 今盈亏额 | 总涨幅% | 总盈亏金额 |
---|---|---|---|---|---|
泰禾集团 | 26000 | 1.95% | 1298元 | -60.47% | -103792元 |
双鹭药业 | 22550 | -1.16% | -2924元 | -12.47% | -35494元 |
嘉诚国际 | 7000 | -0.69% | -1451元 | -22.14% | -59360元 |
罗牛山 | 16000 | -0.68% | -792元 | -9.65% | -12352元 |
三全食品 | 3000 | -0.84% | -536元 | -28.08% | -24714元 |
江西铜业 | 6000 | -0.34% | -472元 | -22.20% | -39474元 |
紫金矿业 | 12000 | 0.49% | 588元 | -28.68% | -48528元 |
罗普特 | 4000 | -0.52% | -475元 | -45.85% | -76852元 |
诺泰生物 | 3000 | -3.86% | -4828元 | -48.63% | -113790元 |
园林股份 | 3000 | -0.68% | -326元 | -11.82% | -6381元 |
清仓盈亏: | -177963.6元 | 今盈亏: | -9918元 | 总盈亏: | -698700.6元 |
上证指数:3555.26点,涨跌-42.17点,涨幅-1.17%
今日上涨股票 1273 支,涨停 65 支
今日下跌股票 3260 支,跌停 16 支
我也差点就信了。
幸好你是刨根到底了。
引用的那个说法我差点就信了...😃
那说法挺理想化的,我也觉得四舍6入5平分比较好。
可实质完全并不是这个原因。