2012-07-11 82 views
0

如果我已經給出了每頁的某些行,並且必須查找已使用了多少頁。如果我把它分開,仍然沒有2頁:舍入整數部門

Dim lines As Integer = 68 
    Dim lines_per_page As Integer = 65 
    Dim pages_used As Integer 
    Pages_used = lines_per_page/lines 

請問你能幫忙嗎?

+0

你得到了什麼輸出上面的代碼? *如果我將它分開,我仍然沒有2頁*不是很具體。如果您不希望Pages_used = 1作爲輸出,那麼您應該對暗淡類型使用十進制或雙精度。 – Somantra 2012-07-11 16:54:27

+0

@Somantra執行它時我得到1。如果我使用十進制或雙精度,我得到0.955882352941176 – Zaki 2012-07-11 17:01:26

+0

準確的輸出是你想達到什麼?你的問題並不清楚。 – Somantra 2012-07-11 17:06:59

回答

4

你倒着做你的事業部。您必須按照每頁行數劃分總行數。看清條款如何取消了這種方式:(!錯)

X頁=(Y線/ 1頁)/(Z線)< < yeilds 1 /頁

X頁=(Z線)/ (y行/ 1頁)=(z行)*(1頁/ y行)< <正確!

另請注意,由於部分頁面必須四捨五入爲整頁,因此您需要執行雙除法,而不是整數除法,然後舍入結果值。

Dim lines As Integer = 68 
Dim lines_per_page As Double = 65 
Dim pages_used As Integer 
pages_used = CType(Math.Ceiling(lines/lines_per_page), Integer) 
0

這是因爲您的Pages_Used爲整數。 VB將圍繞結果。嘗試使用double來代替。

+0

執行它時我得到1。如果我使用小數或雙倍,我得到0.955882352941176 – Zaki 2012-07-11 17:01:32

+0

但如果我以其他方式劃分(pages_used = lines/lines_per_page)我得到1.04615384615385 – Zaki 2012-07-11 17:03:34

+1

Sam1,你想要的1.046。您正在查看總共68行,但只有65行可以放在一張紙上。這給你1 +一些分數。如果你在一頁65頁有680行,你應該看到10.46作爲你的答案。 – APrough 2012-07-11 17:37:25

2

注意:此解決方案利用您提供的參數而不改變類型。 Roken的解決方案在邏輯上是正確的,但不會編譯爲pages_used作爲整數投射。

使用以下命令:

Dim lines As Integer = 68 
Dim lines_per_page As Integer = 65 
Dim pages_used As Integer 

pages_used = (lines + lines_per_page - 1) \ lines_per_page 

結果:pages_used = 2

+0

(+1)這比我的例子更清晰,更清晰,但是較少的自我記錄(計算的行爲並不明顯)。就我個人而言,我會用這個,但是我認爲說明這個基本問題的問題和解決方案非常重要。 – roken 2012-07-11 19:57:59

+0

是的,我不想不同意你的解決方案,因爲它解決了根本問題。我添加便條的唯一原因是由於缺少在所提供的代碼片段之外使用pages_used。我也看到你正確設置了你的CType調用:)(+1)。 – KreepN 2012-07-11 20:04:48

0

這裏有什麼問題是你正在扭轉分裂。你應該劃分每頁行BU線從而

Pages_used =線/ lines_per_page

不是倒過來。