【发布时间】:2013-03-05 05:06:49
【问题描述】:
给定一个分数(103993/33102),我需要找到这个分数的小数点后 50000 位。
最初我在 C++ 中使用setprecision(k),但它只给出了小数点后 17 位数字。我也试过了
sprintf (str, "%.500000f", num)
但结果是一样的。
我需要一个可以解决这个问题的算法,它不会对小数点后的数字进行四舍五入,即它应该是精确的。
【问题讨论】:
-
你是认真的问我们怎么做长除法?!请告诉我你不是一个不知道如何做长除法的程序员。这是在四年级和五年级教的!试试这个math is fun 页面。我知道人们争论成为一名程序员需要多少更高的数学知识,但需要知道如何做基本的算术应该是没有争议的!
-
...我说不出话了。
-
@DavidSchwartz:长除法到 50000 位很难,我怀疑大多数编码人员可以在没有库的情况下做到这一点。 (显而易见的答案是使用库)
-
@Mooing Duck 实际上不是 - 一旦您意识到您需要做的就是结转高位除法的余数,并存储/打印您计算的每个数字的结果。这不像你正在制作一个完整的大十进制库:)
-
@Patashu:对,我对 bignum/bignum 感到困惑,忘记了 bignum/int 很简单。他应该可以做长除法。
标签: c++ c decimal floating-point-precision