当前位置: 首页 > 面试题库 >

在Python中将float转换为整数的最安全方法?

丌官嘉勋
2023-03-14
问题内容

Python的math模块包含诸如floor&的便捷函数ceil。这些函数采用浮点数,并返回在其之下或之上的最接近的整数。但是,这些函数将答案作为浮点数返回。例如:

import math
f=math.floor(2.3)

现在f返回:

2.0

从该浮点数中获取整数而不冒取舍入错误风险的最安全方法是什么(例如,如果浮点数等于1.99999),或者我应该完全使用另一个函数?


问题答案:

可以用浮点数表示的所有整数均具有精确的表示形式。这样您就可以安全地使用int结果了。仅当您尝试使用非2的幂的分母来表示有理数时,才会出现不精确的表示。

这项工作一点都不微不足道!IEEE浮点表示法的一个属性是int∘floor=⌊⋅⌋,如果所讨论的数字的大小足够小,但是int(floor(2.3))可能为1的情况下,可能会有不同的表示法。

要引用维基百科,

绝对值小于或等于2 24的任何整数都可以用单精度格式准确表示,绝对值小于或等于2 53的任何整数都可以用双精度格式准确表示。



 类似资料:
  • 问题内容: 我想以最短的方式表示URL中的整数。例如,可以使用十六进制将11234缩短为“ 2be2”。由于base64使用的是64个字符的编码,因此应该有可能使用比十六进制更少的字符来表示base64中的整数。问题是我不知道使用Python将整数转换为base64(然后再转换回)的最干净方法。 base64模块具有处理字节串的方法-因此,也许一种解决方案是将整数转换为Python字符串的二进制表

  • 问题内容: 我有两个整数和。我需要计算,作为结果,我想浮动。例如,作为结果,我希望得到1.5。我认为,最简单的(或唯一的)的方式来做到这一点是转换和成float类型。不幸的是,我找不到简单的方法。你能帮我吗? 问题答案: 你只需要 投 操作数为浮点的至少一个: 要么 或(不必要)

  • 将值转换为安全整数。 使用 Math.max() 和 Math.min() 来找到最接近的安全值。 使用 Math.round() 转换为一个整数。 const toSafeInteger = num => Math.round(Math.max(Math.min(num, Number.MAX_SAFE_INTEGER), Number.MIN_SAFE_INTEGER)); toSafe

  • 问题内容: 使用PHP,将这样的字符串转换为整数的最快方法是什么? 为什么该特定方法最快?如果它收到意外的输入(例如或数组)会怎样? 问题答案: 我刚刚进行了快速基准测试: 平均而言,调用intval()的速度要慢两倍半,并且如果您的输入已经是整数,则相差最大。 我想知道 为什么 。 更新:我再次使用强制性进行测试 附录: 我刚刚遇到了一种意想不到的行为,选择以下一种方法时应注意: 使用PHP 5

  • 问题内容: 我收到 ValueError:无法将float NaN转换为整数 ,原因如下: “ x”显然是csv文件中的一列,但我无法在文件中发现任何 浮点NaN ,也无法理解其含义。 当我将列读为String时,它的值就像-1,0,1,… 2000,对我来说,它们看起来都非常漂亮。 当我将列读为float时,可​​以加载它。然后它显示值为-1.0,0.0等,仍然没有任何NaN-s 我尝试使用 e

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!