第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Haskell范圍和浮動

Haskell范圍和浮動

為什么浮點數(shù)的Haskell范圍符號的行為與整數(shù)和字符的行為不同?Prelude> [1, 3 .. 10] :: [Int][1,3,5,7,9] Prelude> [1, 3 .. 10] :: [Float][1.0,3.0,5.0,7.0,9.0,11.0]Prelude> ['a', 'c' .. 'f']"ace"如果最后一個元素接近上限,我會理解它,但這顯然不是一個舍入問題。
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

語法[e1, e2 .. e3]實際上是語法糖enumFromThenTo e1 e2 e3,它是Enum類型類中的一個函數(shù)。


Haskell標(biāo)準(zhǔn)定義了它的語義如下:


對于類型Int和Integer,枚舉函數(shù)具有以下含義:


序列enumFrom e1是列表[e1,e1 + 1,e1 + 2,…]。

序列enumFromThen e1 e2是列表[e1,e1 + i,e1 + 2i,…],其中增量i為e2 ? e1。增量可以是零或負(fù)數(shù)。如果增量為零,則所有列表元素都相同。

序列enumFromTo e1 e3是列表[e1,e1 + 1,e1 + 2,…e3]。如果列表是空的e1  >  e3。

序列enumFromThenTo e1 e2 e3是列表[e1,e1 + i,e1 +

  2i,…e3],其中增量i為e2 ? e1。如果增量為正或零,則列表在下一個元素大于時終止e3; 如果列表是空的e1  >  e3。如果增量為負(fù),則列表在下一個元素小于時終止  e3; 如果列表是空的e1  <  e3。

這幾乎是您所期望的,但是Float和Double實例的定義不同:


對于Float和Double,系列的語義enumFrom由Int上面的規(guī)則給出,除了當(dāng)元素變得大于e3 + i∕2正增量時i,或者當(dāng)它們變得小于e3 + i∕2負(fù)數(shù)時,列表終止i。


我不確定這是什么理由,所以我能給你的唯一答案就是這樣,因為它在標(biāo)準(zhǔn)中就是這樣定義的。


您可以通過使用整數(shù)枚舉并轉(zhuǎn)換為之Float后來解決此問題。


Prelude> map fromIntegral [1, 3 .. 10] :: [Float]

[1.0,3.0,5.0,7.0,9.0]


查看完整回答
反對 回復(fù) 2019-09-03
?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

這樣的總和通常也會在省略最后一項時給出錯誤的結(jié)果; 只有在特殊情況下sqrt (1 - 1)才會這樣。我再次爭辯說明顯錯誤的 NaN比一個聽起來不錯的訂單0不準(zhǔn)確的浮點數(shù)更不好。 - 要確定這樣的東西,使用可能觸及域邊界的浮動只是從根本上說是錯誤的方法; 一個應(yīng)該計算單元格中點,或者僅使用范圍語法用于單元間邊界,但是分別添加精確的外部邊界。

查看完整回答
反對 回復(fù) 2019-09-03
  • 3 回答
  • 0 關(guān)注
  • 777 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號