首页 > 解决方案 > 在 Python 中从给定的最大位数和小数位数创建最大可能的十进制数

问题描述

给定max_digitsand decimal_places,该方法将返回最大可能的十进制数。以下是我现在的代码:

from decimal import Decimal

def get_max_decimal_number(max_digits, decimal_places):
    result = ''

    for i in range(max_digits - decimal_places):
        result += '9'

    if decimal_places > 0:
        result += '.'
        for i in range(decimal_places):
            result += '9'

    return Decimal(result)

没有进行类型检查,因为我们做了以下假设:

结果如下:

>>> get_max_decimal_number(4, 2)
Decimal('99.99')
>>> get_max_decimal_number(2, 2)
Decimal('0.99')
>>> get_max_decimal_number(1, 0)
Decimal('9')

你可以在这里测试一下

我现在的解决方案感觉有点老套。有一个更好的方法吗?也许一些我不知道的内置方法。

标签: pythonpython-3.x

解决方案


尝试这个,

def get_max_decimal_number(max_digits, decimal_places):
  return float('9'*(max_digits-decimal_places)+'.'+'9'*decimal_places)

print(get_max_decimal_number(2,2)) # outputs 0.99

print(get_max_decimal_number(4, 2)) # outputs 99.99

print(get_max_decimal_number(1, 0)) # outputs 9.0

在此处查看实际操作

您可以使用Decimal而不是float类型转换结果。


推荐阅读