2
// Purpose: Determine attendance based on ticket-price
// Example: attendance(4.90) == 135
def attendance: Double => Int = {
(ticket_price: Double) => {
120 + math.ceil(150 * (5.00 - ticket_price)).toInt
}
} //> attendance: => Double => Int
attendance(4.90) //> res0: Int = 135
assert(attendance(4.90) == 135)
基本上,斷言是炸燬和出席返回134而不是135.所以我扔了math.ceil它,它的工作。但我只是想知道這是否是最好的/適當的/慣用的方法。什麼是Scala中加倍或浮點數的最佳方式?
對於那些誰不知道在那裏這代碼傳來:attendance code
它*取決於所期望的。將float/double轉換爲整型是一個截斷操作。但是,有很多不同的變體,包括實際舍入。另外,請記住FP值可能會出現一些奇怪的邊緣情況。 – user2864740
@ user2864740那麼在這種情況下,我預計150 * .10 == 15.不是14.998。所以我想這是爲了適當的數字。 – dotnetN00b
一些風格問題:你的常量(120,150,5.00)是什麼意思?如果可能的話,我寧願看到指出它們的目的/含義的命名值。另外,爲什麼你從一個方法返回一個匿名函數?這似乎是一個不必要的間接方式,當你可以有一個更簡單的def defance(ticketPrice:Double)= 120 + math.ceil(150 *(5.00 - ticketPrice))toInt'(注意駱駝大小寫和缺少外部大括號) 。 –