[問題] float取餘數

看板C_and_CPP (C/C++)作者 (今天早上)時間15年前 (2010/11/18 23:51), 編輯推噓0(0010)
留言10則, 4人參與, 最新討論串1/1
要取float的餘數 譬如說5%0.3 或是0.09%0.00007之類的 我知道可以用fmod ( float numerator, float denominator ); 但是 好像小數後面的垃圾值有點大? 像是printf("%.20f",fmod(10,0.01)); 結果是0.00999999999999.... 當然也可以用printf("%f\n", x - int( x / y ) * y); 只是這樣fmod存在意義是甚麼呢? 我想問的是 該怎做才是最好的呢? 謝謝! 因為我現在需要處理像是200ns%5ns這種case 且需要非常準才行... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.67.232

11/18 23:53, , 1F
看你要多準
11/18 23:53, 1F

11/18 23:53, , 2F
0.009999有點大耶
11/18 23:53, 2F

11/18 23:55, , 3F
應該說fmod只能這樣的功效嗎?
11/18 23:55, 3F
※ 編輯: tomcallme 來自: 140.113.67.232 (11/18 23:59)

11/19 00:03, , 4F
快去讀十一誡
11/19 00:03, 4F

11/19 00:03, , 5F
還是說要先等比例放大成整數? 這樣一定沒問題只是很麻煩
11/19 00:03, 5F

11/19 00:04, , 6F
我知道這是二進位的垃圾值造成的影響
11/19 00:04, 6F

11/19 00:07, , 7F
你想要非常準只能這樣
11/19 00:07, 7F

11/19 00:08, , 8F
C語言 fmod 是吃兩個 double, C++ 的 fmod 才吃 float
11/19 00:08, 8F

11/19 00:10, , 9F
但是看你沒有寫 f, 應該還是呼叫 double 的版本
11/19 00:10, 9F

11/19 00:12, , 10F
我原先是期待fmod能處理這樣的問題..
11/19 00:12, 10F
文章代碼(AID): #1CvKkEB_ (C_and_CPP)
文章代碼(AID): #1CvKkEB_ (C_and_CPP)