Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 从双精度非科学符号列表创建字符串列表 listOfLongDeci=[showFFloat Nothing(1/a)| a7] listOfLongDeci2=[显示(1/a)| a 7] 清单3=[(1/a)| a 7] 第一个给出了一个节目列表,如何从节目中生成字符串 第二部分给出了科学符号的列表 第三只给出了一个列表 双打_Haskell_Floating Point - Fatal编程技术网

Haskell 从双精度非科学符号列表创建字符串列表 listOfLongDeci=[showFFloat Nothing(1/a)| a7] listOfLongDeci2=[显示(1/a)| a 7] 清单3=[(1/a)| a 7] 第一个给出了一个节目列表,如何从节目中生成字符串 第二部分给出了科学符号的列表 第三只给出了一个列表 双打

Haskell 从双精度非科学符号列表创建字符串列表 listOfLongDeci=[showFFloat Nothing(1/a)| a7] listOfLongDeci2=[显示(1/a)| a 7] 清单3=[(1/a)| a 7] 第一个给出了一个节目列表,如何从节目中生成字符串 第二部分给出了科学符号的列表 第三只给出了一个列表 双打,haskell,floating-point,Haskell,Floating Point,我如何使用其中任何一个来创建非科学符号字符串列表?(): 第一个给出了显示的列表,如何从显示中生成字符串 由于ShowS是String->String的类型同义词,因此通过将函数应用于字符串,可以获得字符串。由于showXFloat函数产生一个函数,该函数在最后的String参数前面加上一些String(基本上是一个差异列表;许多show相关函数产生这样的-showChar,showString,仅举几例-),最后一个参数的自然选择是空的字符串,因此 listOfLongDeci = [show

我如何使用其中任何一个来创建非科学符号字符串列表?()

第一个给出了
显示的列表
,如何从
显示中生成
字符串

由于
ShowS
String->String
的类型同义词,因此通过将函数应用于
字符串
,可以获得
字符串。由于
showXFloat
函数产生一个函数,该函数在最后的
String
参数前面加上一些
String
(基本上是一个差异列表;许多
show
相关函数产生这样的-
showChar
showString
,仅举几例-),最后一个参数的自然选择是空的
字符串
,因此

listOfLongDeci = [showFFloat Nothing (1/a) | a<-[2..1000], length (show (1/a)) > 7]

listOfLongDeci2 = [show (1/a) | a<-[2..1000], length (show (1/a)) > 7]

listOfLongDeci3 = [(1/a) | a<-[2..1000], length (show (1/a)) > 7]
精度的有效十进制数字,因此从第一个非零数字开始,您有15或16个数字,您可以预期这些数字对于分数
1/d
的精确[终止或重复]十进制扩展是正确的,除此之外,扩展不同

例如,
1/71
具有长度为35的循环周期
014085070422535112676056338028169
(到目前为止,不是要考虑的范围内最长的)。与
1/71
最接近的
Double
表示为

Prelude> 53 * log 2 / log 10
15.954589770191001
其中前17位有效数字是正确的(并且
0.01404507042253521
也是
showFFloat Nothing(1/71)”“
给出的内容)


要在
1/d
的十进制展开中找到最长的循环周期,可以使用
Rational
数字
1%d
的精确(或足够精确的有限)字符串表示,或者更好地使用纯整数算术(使用长除法计算十进制展开)不涉及
Rational

也许你想要
Text.Printf.Printf
showFFloat Nothing(1/a)”“
给你一个
字符串
.thx,@DanielFischer,我想我试过了,但我一定是搞砸了up@DanielFischer关于提交评论作为回答的另一个唠叨:-)你设法迅速介入并对所有这些事情给出了简洁的答案,但是他们从来没有得到正式的回答,因为你已经处理好了。@sclv唠叨成功(至少这次),现在得到了正式的回答。
Prelude> 53 * log 2 / log 10
15.954589770191001
0.01408450704225352144438598855913369334302842617034912109375 = 8119165525400331 / (2^59)