gpt4 book ai didi

c# - 有理数的最短十进制表示

转载 作者:行者123 更新时间:2023-12-02 20:57:46 24 4
gpt4 key购买 nike

我想代表 A/B 中的两个数字格式,w哪里AB是任意整数。我想要最短格式的小数结果。

示例:

  • 3/28 的最短十进制表示形式是 "0.10(714285)" .
  • 1/7 的十进制表示形式是 "0.(142857)"

我怎样才能用 C# 做到这一点?

最佳答案

希望有人可以将其转换为 C# 代码:

def get_decimal(a, b):
result = str(a / b) + '.'
r = a % b
remainders = []
while r not in remainders:
remainders.append(r)
result += str(10 * r / b)
r = 10 * r % b
return result

一些测试:

>>> get_decimal(1, 7)
'0.142857'
>>> get_decimal(10, 7)
'1.428571'
>>> get_decimal(3, 28)
'0.10714285'
>>> get_decimal(99099167, 990000000)
'0.100100168'

如果您需要括号来指示重复的数字集,则如下所示:

def get_decimal(a, b):
result = str(a / b) + '.'
r = a % b
remainders = []
digits = []
while r not in remainders:
remainders.append(r)
digits.append(str(10 * r / b))
r = 10 * r % b
start = remainders.index(r)
result += ''.join(digits[0:start]) + '(' + ''.join(digits[start:]) + ')'
return result

一些测试:

>>> get_decimal(1, 7)
'0.(142857)'
>>> get_decimal(10, 7)
'1.(428571)'
>>> get_decimal(3, 28)
'0.10(714285)'
>>> get_decimal(99099167, 990000000)
'0.1001001(68)'

关于c# - 有理数的最短十进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com