如何在不四舍五入的情况下将浮点数截断到特定的小数位数?

Susan Sarandon
发布: 2024-11-06 09:45:02
原创
754 人浏览过

How Do I Truncate a Float to a Specific Number of Decimal Places Without Rounding?

如何从浮点数中删除数字

要从浮点数中删除数字并保留小数点后的特定位数,请执行以下操作这些步骤:

实现(Python 2.7 和 3.1):

def truncate(f, n):
    """Truncates/pads a float f to n decimal places without rounding"""
    s = '{}'.format(f)
    if 'e' in s or 'E' in s:
        return '{0:.{1}f}'.format(f, n)
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
登录后复制

实现(旧版本的 Python):

def truncate(f, n):
    """Truncates/pads a float f to n decimal places without rounding"""
    s = '%.12f' % f
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
登录后复制

说明:

  1. 转换为字符串:使用 '{}' 将浮点数转换为全精度字符串。
  2. 处理科学记数法:如果字符串表示形式包含“e”或“E”,请使用“{0:.{1}f}”对其进行格式化。
  3. 分割字符串:将字符串分成三部分:小数点之前 (i)、小数点本身 (p) 和小数点之后 (d)。
  4. 截断或填充: 如果需要获得 n 位小数,则将 '0 附加到 d,或者如果 d 包含超过 n 位小数,则截断 d。

特殊注意事项:

  • 精度注意事项:对于旧版本的 Python(最高 2.6 或 3.0),可能需要选择固定精度(例如 12)进行舍入,以避免截断错误。
  • 舍入和浮点错误:某些浮点文字可能表示相同的二进制值,即使它们在代码中显示不同,从而导致截断中潜在的差异。

以上是如何在不四舍五入的情况下将浮点数截断到特定的小数位数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!