【问题标题】:python : converting Unicode to float with decimal precisionpython:将Unicode转换为具有十进制精度的浮点数
【发布时间】:2017-06-27 11:22:36
【问题描述】:

我想将 unicode 字符串转换为带 2 位小数的浮点数。我正在使用 locale.atof() 来隐藏浮动。我知道我们可以使用 locale.format 将结果值格式化为 2 个小数点。是否可以使用单个函数将 unicode 转换为指定小数精度的浮点数?

目前我是这样使用的

float(locale.format('%.2f',(locale.atof('3.145678'))) 

还有其他方法吗?

【问题讨论】:

  • 你的例子在哪里?
  • locate.atof('3.145677777')。我需要输出为 3.14。目前我正在这样做。 float(locale.format('%.2f',(locale.atof(i[3])*100)/snpdbtm))
  • A float 没有可指定的小数点位数。如果你的值是一个字符串,你可以选择小数点的个数;如果它是一个浮动,你不能。如果您要询问如何将包含数值的字符串修剪到给定的小数位数;花车根本不需要进入图片。

标签: python unicode floating


【解决方案1】:

内置的round 函数将四舍五入到指定的位数,但没有一个函数可以同时转换字符串和四舍五入。

>>> round(float('3.141592'),2)
3.14

【讨论】:

    【解决方案2】:

    您应该考虑decimal 模块,它提供了处理浮点精度的实用程序,例如:

    from decimal import Decimal as D
    from decimal import ROUND_DOWN
    
    d = D('3.145677777').quantize(D('0.01'))  
    print(d)
    # 3.15
    

    如果要截断,也可以设置舍入行为:

    d = D('3.145677777').quantize(D('0.01'), rounding=ROUND_DOWN)
    print(d)
    # 3.14
    

    【讨论】:

      【解决方案3】:
      float(("%.2f"%float('3.145')))
      

      【讨论】:

        【解决方案4】:

        定义你自己的一个函数:

        def trim_decimal_points(s):
            result = float(s)
            return format(result, '.2f')
        

        然后将其作为一个函数使用:

        trim_decimal_points('3.145677777')
        

        【讨论】:

          猜你喜欢
          • 2014-02-07
          • 1970-01-01
          • 1970-01-01
          • 2022-11-19
          • 2014-03-01
          • 1970-01-01
          • 2020-11-12
          • 2012-01-07
          • 1970-01-01
          相关资源
          最近更新 更多