/ 然后 math.floor 和 // 结果不一致……求教数据格式转换机制

42 天前
 theoriz
Python 3.11.7 (main, Sep 15 2024, 15:14:54) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1e19 / 1043
9587727708533078.0
>>> 1e19 // 1043
9587727708533078.0
>>> 1e19 // 1044
9578544061302680.0
>>> 1e19 / 1044
9578544061302682.0

wolfram 算出来是 9.578544061302681 × 10^15 即 9578544061302681

int 和 float 是在什么时候转换的呢

=============补充下背景

在刷 atcoder https://atcoder.jp/contests/abc380/editorial/11362?lang=en

用 a//b ac 了,但是 math.floor(a/b)去实现就无法 ac 然而如果 a//b 精度有问题,那是否说明 a//b 的 ac 也只是巧合……

683 次点击
所在节点    Python
2 条回复
nagisaushio
42 天前
你需要 10**19//1044
theoriz
42 天前
@nagisaushio 懂了,感谢。。。

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

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

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

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

© 2021 V2EX