F#中非常简单的循环

时间:2010-01-27 15:21:11

标签: f#

我在FSI和VS2010都试过这个。它们给出了相同的输出。

for i= 8 to 10 do
    for j=7 to 10 do
    let product=i*j
    printfn "%d * %o = %x" i j product

,输出为:

8*7=38
8*10=40
8*11=48
8*12=50
9*7=3f
9*10=48
9*11=51
9*12=5a
10*7=46
10*10=50
10*11=5a
10*12=64
val it : unit = ()

我在这里错过了什么吗?

我尝试使用在线教程学习编程(使用F#因为我喜欢它)。

4 个答案:

答案 0 :(得分:12)

输出对我来说似乎是正确的,因为您将ijproduct的输出格式化为十进制(%d),八进制({{1} })和hex(%o),分别为。

数字7,8,9和10被格式化为7,10,11和12,因为这是它们的八进制表示。将它们全部更改为%x%d以解决问题。

答案 1 :(得分:5)

猜猜它是关于printfn的格式化字符串。试试%i

for i = 8 to 10 do
    for j = 7 to 10 do
        let product=i*j
        printfn "%i * %i = %i" i j product

答案 2 :(得分:5)

是。你错过了什么。 10(十进制)* 10(八进制)= 50(十六进制)。 %d表示十进制,%o表示八进制,%x表示十六进制。如果你不知道它们是什么,请谷歌。

以下是完全相同的陈述。

十进制:

10 * 8 = 80。

八进制:

12 * 10 = 120

in hex:

a * 8 = 50。

在复制之前请仔细查看。

答案 3 :(得分:0)

请注意,printf格式说明符的文档在这里

http://msdn.microsoft.com/en-us/library/ee370560(VS.100).aspx

(虽然截至今​​天,文档格式有些混乱,难以阅读)