Gojira 哥斯拉Gojira 哥斯拉

哥斯拉爱好者的日常
生活相当无趣 我得找点乐子

半自动交易可以上线开搞了

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日股票亏盈情况

股票股数今涨幅%今盈亏额总涨幅%总盈亏金额
泰禾集团260001.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元
紫金矿业120000.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 支

GOJIRA.NET原创文章未经允许不得转载! 当前页面:Gojira 哥斯拉 » 半自动交易可以上线开搞了

评论 3

  1. 我也差点就信了。
    幸好你是刨根到底了。

    子痕 L4 精英 2022.01.16 23:16:27 回复
  2. 引用的那个说法我差点就信了...😃

    流金岁月 SVIP 元老 2022.01.14 07:53:28 回复
    • 那说法挺理想化的,我也觉得四舍6入5平分比较好。
      可实质完全并不是这个原因。

      高飞 博 主 2022.01.14 23:25:25 回复