好吧,我有兩個功能,其中第一個看起來像這樣:f#整數浮點模數1.0 = 1.0?
let dlth x = float (x.ToString().Length)
這需要一個浮動,並返回的位數,這部分工作正常。第二個功能是這樣的:
let droot x = ((x ** (1./(dlth x))) % 1.)
它接受一個浮體和它升高至等於1.0 /(數量的數字)的冪,然後取結果和和模數1.0。對於整數應該是零。
因此對於droot36。它需要(36.0 **(1.0/2.0))這是6.0,然後6.0 mod 1.0等於0.0;
現在,這工作正常,直到我嘗試數字81.0。 (以及所有應該工作的數字高於81),由於某種原因返回1.0,拋出我的模式匹配。有人可以告訴我爲什麼會發生這種情況嗎?
PostScript:這是項目歐拉解決方案的一部分。如果您知道哪個問題,請請勿發佈項目歐拉解決方案。我只需要幫助,找出爲什麼模數返回有趣的結果
我明白你的意思了,但我認爲用我檢查的數字範圍來創建一個適用於所有事情的測試是不可能的。我想我要做的是看看我是否可以重做它,以避免完全浮動。 – AvatarOfChronos 2009-08-11 15:06:11