百科问答小站 logo
百科问答小站 font logo



为什么python整数除法运算得浮点数? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

整数 不等于 整型。

你的问题应该是,两个整型相除为什么得到浮点型……

如果一定要说就是规定如此。

事实上数值运算的时候类型发生变化是非常正常的事情……

例如在C语言里面,整型与浮点型计算得到浮点型。

你说俩类型相同的加减不会得到其他类型?


C#里面俩short做各种运算会得到int的结果。

这没什么值得大惊小怪的……

DateTime相减还会得到TimeSpan呢……



事实上整型的除法才是不符合直觉的吧……

之所以要设计成那样,是因为整型需要用来做精确计算。

浮点数无法做精确计算,如果直接转换为浮点数计算除法,就会产生精度丢失。

当然有人会说直接向下取整岂不是丢的更多?

事实上这是错误的,因为丢失的部分精确的等于取余运算的结果,也就是说对于C语言而言:

a/b*b+a%b===a


user avatar   pansz 网友的相关建议: 
      

开局一张图,剩下全靠猜?这个没法评价。

从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。

跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。

调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。

然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。

如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。




  

相关话题

  c++如此繁琐,为什么大学不直接开展python课程? 
  程序员如何有效、愉快的使用 GitHub? 
  程序员有流派吗? 
  Windows 上最小的「HelloWorld.exe」能有多小? 
  .NET中如何通过Razor引擎生成这样的代码? 
  进程被操作系统加载之后,磁盘上的二进制文件可以删掉吗?如果删掉对正在运行的进程有什么影响吗? 
  异常处理(exception handling)和错误处理(error handling)有什么区别? 
  Python 不区分变量定义和赋值,是否是设计上的缺陷? 
  如果一门编程语言中不允许对象(或结构体)循环引用,那么用它实现什么功能会比较困难? 
  以英语为母语的人写代码时是什么感觉? 

前一个讨论
为什么C++里,封装类对象消亡时候,先执行封装类的析构函数,再执行成员对象的析构函数?
下一个讨论
和男友异地五年,请他在肯德基吃饭,他主动点餐结果都只有一人份,完全的单人套餐,我应该教他还是提分手?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利