python - 在 Python 中从给定的最大位数和小数位数创建最大可能的十进制数
问题描述
给定max_digits
and 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)
没有进行类型检查,因为我们做了以下假设:
max_digits
是大于或等于 1 的整数。decimal_places
是大于或等于 0 且小于或等于 的整数max_digits
。
结果如下:
>>> 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')
你可以在这里测试一下
我现在的解决方案感觉有点老套。有一个更好的方法吗?也许一些我不知道的内置方法。
解决方案
尝试这个,
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
类型转换结果。
推荐阅读
- git - 如何分叉、创建分支和 jupyter 笔记本?
- mysql - 安装 SQL 问题 - “您的用户 'root' 连接到本地主机上的 MYSQL 服务器的尝试失败:-3306
- jquery - jquery:AJAX加载后滚动到底部
- firebase-hosting - Firebase 托管为 Cloud Run 增加了约 450 毫秒的延迟开销
- python - 如何检索使用 django allauth 和 django-rest-auth 和 django rest 框架生成的令牌
- c - C二叉树删除不起作用按顺序打印导致无限递归
- security - psexec 和 wmiexec/evil-winrm 有什么区别?
- python - 如何在 df 列中获取唯一值?
- c++ - 包含 json_to_cpp 的 Codelite 项目将无法编译
- python - 使用 webbot 自动化浏览器