极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25895|回复: 16

此算式何解

[复制链接]
发表于 2012-8-11 01:37:34 | 显示全部楼层 |阅读模式
float num1=0.56;

while(1==1)
{
num1=num1*10;
      Serial.print("ttnum=");
    Serial.println(num1);
   
       Serial.print("tttnum=");
    Serial.println((int)num1);
   
    t=num1-(int)num1;  

     Serial.print("t=");
    Serial.println(t);
}
==================================

tnum=0.56

ttnum=5.60
tttnum=5
t=0.60

ttnum=56.00
tttnum=55
t=1.00

ttnum=560.00
tttnum=559
t=1.00

ttnum=5599.98
tttnum=5599
t=0.98
ttnum=55999.76
tttnum=-9537
t=65536.76
ttnum=559997.56
tttnum=-29827
t=589824.56


在上式中和输出结果中,当 num1=56时  (int)num1 为何等于55   而不是56呢?
回复

使用道具 举报

发表于 2012-8-11 08:36:49 | 显示全部楼层
num1=num1*10;
改成
num1=num1*10.0;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 10:44:02 | 显示全部楼层
能解释一下原因吗?
回复 支持 反对

使用道具 举报

发表于 2012-8-11 11:49:49 | 显示全部楼层
num1*10; 应为10是int,num1这个float被自动转换成int,10.0是float类型。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 13:51:15 | 显示全部楼层
那56.00 int 也不应该是 55吧,应该是56才对啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 14:13:04 | 显示全部楼层
并且经过测试, num1=num1*10.0;
结果还是55,并不是56?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 14:15:46 | 显示全部楼层
num1=num1*10;
       Serial.print("ttnum=");
     Serial.println(num1);     
       Serial.print("tttnum=");
    Serial.println((int)num1);

ttnum=56.00
tttnum=55
t=1.00
根据结果能看出来,*10的时候,ttnum是浮点的,并不是int呀
回复 支持 反对

使用道具 举报

发表于 2012-8-11 14:30:08 | 显示全部楼层
davidce 发表于 2012-8-11 11:49
num1*10; 应为10是int,num1这个float被自动转换成int,10.0是float类型。

在同一个公式中,精度是按照最高的来的。不会说folat当成int算。
回复 支持 反对

使用道具 举报

发表于 2012-8-11 14:44:11 | 显示全部楼层
珜羽 发表于 2012-8-11 14:30
在同一个公式中,精度是按照最高的来的。不会说folat当成int算。

那怎么解释?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 15:16:51 | 显示全部楼层
davidce 发表于 2012-8-11 14:44
那怎么解释?

肯定有别的原因,从我输出里看得到 *10后输出的是 56.00 是浮点,不是56 不是int型的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 15:42:44 | 显示全部楼层
  1. fnum=0.01
  2. num=0.10 num_t=0 t=0.10
  3. num=1.00 num_t=0 t=1.00
  4. num=10.00 num_t=9 t=1.00
  5. num=100.00 num_t=99 t=1.00
  6. fnum=0.02
  7. num=0.20 num_t=0 t=0.20
  8. num=2.00 num_t=1 t=1.00
  9. num=20.00 num_t=19 t=1.00
  10. num=200.00 num_t=199 t=1.00
  11. fnum=0.03
  12. num=0.30 num_t=0 t=0.30
  13. num=3.00 num_t=2 t=1.00
  14. num=30.00 num_t=29 t=1.00
  15. num=300.00 num_t=299 t=1.00
  16. fnum=0.04
  17. num=0.40 num_t=0 t=0.40
  18. num=4.00 num_t=3 t=1.00
  19. num=40.00 num_t=39 t=1.00
  20. num=400.00 num_t=399 t=1.00
  21. fnum=0.05
  22. num=0.50 num_t=0 t=0.50
  23. num=5.00 num_t=4 t=1.00
  24. num=50.00 num_t=49 t=1.00
  25. num=500.00 num_t=499 t=1.00
  26. fnum=0.06
  27. num=0.60 num_t=0 t=0.60
  28. num=6.00 num_t=5 t=1.00
  29. num=60.00 num_t=59 t=1.00
  30. num=600.00 num_t=599 t=1.00
  31. fnum=0.07
  32. num=0.70 num_t=0 t=0.70
  33. num=7.00 num_t=6 t=1.00
  34. num=70.00 num_t=69 t=1.00
  35. num=700.00 num_t=699 t=1.00
  36. fnum=0.08
  37. num=0.80 num_t=0 t=0.80
  38. num=8.00 num_t=7 t=1.00
  39. num=80.00 num_t=79 t=1.00
  40. num=800.00 num_t=799 t=1.00
  41. fnum=0.09
  42. num=0.90 num_t=0 t=0.90
  43. num=9.00 num_t=8 t=1.00
  44. num=90.00 num_t=89 t=1.00
  45. num=900.00 num_t=899 t=1.00
  46. fnum=0.10
  47. num=1.00 num_t=0 t=1.00
  48. num=10.00 num_t=9 t=1.00
  49. num=100.00 num_t=99 t=1.00
  50. num=1000.00 num_t=999 t=1.00
  51. fnum=0.11
  52. num=1.10 num_t=1 t=0.10
  53. num=11.00 num_t=10 t=1.00
  54. num=110.00 num_t=109 t=1.00
  55. num=1100.00 num_t=1099 t=1.00
  56. fnum=0.12
  57. num=1.20 num_t=1 t=0.20
  58. num=12.00 num_t=11 t=1.00
  59. num=120.00 num_t=119 t=1.00
  60. num=1200.00 num_t=1199 t=1.00
  61. fnum=0.13
  62. num=1.30 num_t=1 t=0.30
  63. num=13.00 num_t=12 t=1.00
  64. num=130.00 num_t=129 t=1.00
  65. num=1300.00 num_t=1299 t=1.00
  66. fnum=0.14
  67. num=1.40 num_t=1 t=0.40
  68. num=14.00 num_t=13 t=1.00
  69. num=140.00 num_t=139 t=1.00
  70. num=1400.00 num_t=1399 t=1.00
  71. fnum=0.15
  72. num=1.50 num_t=1 t=0.50
  73. num=15.00 num_t=14 t=1.00
  74. num=150.00 num_t=149 t=1.00
  75. num=1500.00 num_t=1499 t=1.00
  76. fnum=0.16
  77. num=1.60 num_t=1 t=0.60
  78. num=16.00 num_t=15 t=1.00
  79. num=160.00 num_t=159 t=1.00
  80. num=1600.00 num_t=1599 t=1.00
  81. fnum=0.17
  82. num=1.70 num_t=1 t=0.70
  83. num=17.00 num_t=17 t=0.00
  84. num=170.00 num_t=170 t=0.00
  85. num=1700.00 num_t=1700 t=0.00
  86. fnum=0.18
  87. num=1.80 num_t=1 t=0.80
  88. num=18.00 num_t=18 t=0.00
  89. num=180.00 num_t=180 t=0.00
  90. num=1800.00 num_t=1800 t=0.00
  91. fnum=0.19
  92. num=1.90 num_t=1 t=0.90
  93. num=19.00 num_t=19 t=0.00
  94. num=190.00 num_t=190 t=0.00
  95. num=1900.00 num_t=1900 t=0.00
  96. fnum=0.20
  97. num=2.00 num_t=2 t=0.00
  98. num=20.00 num_t=20 t=0.00
  99. num=200.00 num_t=200 t=0.00
  100. num=2000.00 num_t=2000 t=0.00
  101. fnum=0.21
  102. num=2.10 num_t=2 t=0.10
  103. num=21.00 num_t=21 t=0.00
  104. num=210.00 num_t=210 t=0.00
  105. num=2100.00 num_t=2100 t=0.00
  106. fnum=0.22
  107. num=2.20 num_t=2 t=0.20
  108. num=22.00 num_t=22 t=0.00
  109. num=220.00 num_t=220 t=0.00
  110. num=2200.00 num_t=2200 t=0.00
  111. fnum=0.23
  112. num=2.30 num_t=2 t=0.30
  113. num=23.00 num_t=23 t=0.00
  114. num=230.00 num_t=230 t=0.00
  115. num=2300.00 num_t=2300 t=0.00
  116. fnum=0.24
  117. num=2.40 num_t=2 t=0.40
  118. num=24.00 num_t=24 t=0.00
  119. num=240.00 num_t=240 t=0.00
  120. num=2400.00 num_t=2400 t=0.00
  121. fnum=0.25
  122. num=2.50 num_t=2 t=0.50
  123. num=25.00 num_t=25 t=0.00
  124. num=250.00 num_t=250 t=0.00
  125. num=2500.00 num_t=2500 t=0.00
  126. fnum=0.26
  127. num=2.60 num_t=2 t=0.60
  128. num=26.00 num_t=26 t=0.00
  129. num=260.00 num_t=260 t=0.00
  130. num=2600.00 num_t=2600 t=0.00
  131. fnum=0.27
  132. num=2.70 num_t=2 t=0.70
  133. num=27.00 num_t=27 t=0.00
  134. num=270.00 num_t=270 t=0.00
  135. num=2700.00 num_t=2700 t=0.00
  136. fnum=0.28
  137. num=2.80 num_t=2 t=0.80
  138. num=28.00 num_t=28 t=0.00
  139. num=280.00 num_t=280 t=0.00
  140. num=2800.00 num_t=2800 t=0.00
  141. fnum=0.29
  142. num=2.90 num_t=2 t=0.90
  143. num=29.00 num_t=28 t=1.00
  144. num=290.00 num_t=289 t=1.00
  145. num=2900.00 num_t=2899 t=1.00
  146. fnum=0.30
  147. num=3.00 num_t=2 t=1.00
  148. num=30.00 num_t=29 t=1.00
  149. num=300.00 num_t=299 t=1.00
  150. num=3000.00 num_t=2999 t=1.00
  151. fnum=0.31
  152. num=3.10 num_t=3 t=0.10
  153. num=31.00 num_t=30 t=1.00
  154. num=310.00 num_t=309 t=1.00
  155. num=3100.00 num_t=3099 t=1.00
  156. fnum=0.32
  157. num=3.20 num_t=3 t=0.20
  158. num=32.00 num_t=31 t=1.00
  159. num=320.00 num_t=319 t=1.00
  160. num=3200.00 num_t=3199 t=1.00
  161. fnum=0.33
  162. num=3.30 num_t=3 t=0.30
  163. num=33.00 num_t=32 t=1.00
  164. num=330.00 num_t=329 t=1.00
  165. num=3300.00 num_t=3299 t=1.00
  166. fnum=0.34
  167. num=3.40 num_t=3 t=0.40
  168. num=34.00 num_t=33 t=1.00
  169. num=340.00 num_t=339 t=1.00
  170. num=3400.00 num_t=3399 t=1.00
  171. fnum=0.35
  172. num=3.50 num_t=3 t=0.50
  173. num=35.00 num_t=34 t=1.00
  174. num=350.00 num_t=349 t=1.00
  175. num=3500.00 num_t=3499 t=1.00
  176. fnum=0.36
  177. num=3.60 num_t=3 t=0.60
  178. num=36.00 num_t=35 t=1.00
  179. num=360.00 num_t=359 t=1.00
  180. num=3600.00 num_t=3599 t=1.00
  181. fnum=0.37
  182. num=3.70 num_t=3 t=0.70
  183. num=37.00 num_t=36 t=1.00
  184. num=370.00 num_t=369 t=1.00
  185. num=3700.00 num_t=3699 t=1.00
  186. fnum=0.38
  187. num=3.80 num_t=3 t=0.80
  188. num=38.00 num_t=37 t=1.00
  189. num=380.00 num_t=379 t=1.00
  190. num=3800.00 num_t=3799 t=1.00
  191. fnum=0.39
  192. num=3.90 num_t=3 t=0.90
  193. num=39.00 num_t=38 t=1.00
  194. num=390.00 num_t=389 t=1.00
  195. num=3900.00 num_t=3899 t=1.00
  196. fnum=0.40
  197. num=4.00 num_t=3 t=1.00
  198. num=40.00 num_t=39 t=1.00
  199. num=400.00 num_t=399 t=1.00
  200. num=4000.00 num_t=3999 t=1.00
  201. fnum=0.41
  202. num=4.10 num_t=4 t=0.10
  203. num=41.00 num_t=40 t=1.00
  204. num=410.00 num_t=409 t=1.00
  205. num=4100.00 num_t=4099 t=1.00
  206. fnum=0.42
  207. num=4.20 num_t=4 t=0.20
  208. num=42.00 num_t=41 t=1.00
  209. num=420.00 num_t=419 t=1.00
  210. num=4200.00 num_t=4199 t=1.00
  211. fnum=0.43
  212. num=4.30 num_t=4 t=0.30
  213. num=43.00 num_t=42 t=1.00
  214. num=430.00 num_t=429 t=1.00
  215. num=4300.00 num_t=4299 t=1.00
  216. fnum=0.44
  217. num=4.40 num_t=4 t=0.40
  218. num=44.00 num_t=43 t=1.00
  219. num=440.00 num_t=439 t=1.00
  220. num=4400.00 num_t=4399 t=1.00
  221. fnum=0.45
  222. num=4.50 num_t=4 t=0.50
  223. num=45.00 num_t=44 t=1.00
  224. num=450.00 num_t=449 t=1.00
  225. num=4500.00 num_t=4499 t=1.00
  226. fnum=0.46
  227. num=4.60 num_t=4 t=0.60
  228. num=46.00 num_t=45 t=1.00
  229. num=460.00 num_t=459 t=1.00
  230. num=4600.00 num_t=4599 t=1.00
  231. fnum=0.47
  232. num=4.70 num_t=4 t=0.70
  233. num=47.00 num_t=46 t=1.00
  234. num=470.00 num_t=469 t=1.00
  235. num=4700.00 num_t=4699 t=1.00
  236. fnum=0.48
  237. num=4.80 num_t=4 t=0.80
  238. num=48.00 num_t=47 t=1.00
  239. num=480.00 num_t=479 t=1.00
  240. num=4800.00 num_t=4799 t=1.00
  241. fnum=0.49
  242. num=4.90 num_t=4 t=0.90
  243. num=49.00 num_t=48 t=1.00
  244. num=490.00 num_t=489 t=1.00
  245. num=4900.00 num_t=4899 t=1.00
  246. fnum=0.50
  247. num=5.00 num_t=4 t=1.00
  248. num=50.00 num_t=49 t=1.00
  249. num=500.00 num_t=499 t=1.00
  250. num=5000.00 num_t=4999 t=1.00
  251. fnum=0.51
  252. num=5.10 num_t=5 t=0.10
  253. num=51.00 num_t=50 t=1.00
  254. num=510.00 num_t=509 t=1.00
  255. num=5100.00 num_t=5099 t=1.00
  256. fnum=0.52
  257. num=5.20 num_t=5 t=0.20
  258. num=52.00 num_t=51 t=1.00
  259. num=520.00 num_t=519 t=1.00
  260. num=5200.00 num_t=5199 t=1.00
  261. fnum=0.53
  262. num=5.30 num_t=5 t=0.30
  263. num=53.00 num_t=52 t=1.00
  264. num=530.00 num_t=529 t=1.00
  265. num=5300.00 num_t=5299 t=1.00
  266. fnum=0.54
  267. num=5.40 num_t=5 t=0.40
  268. num=54.00 num_t=53 t=1.00
  269. num=540.00 num_t=539 t=1.00
  270. num=5400.00 num_t=5399 t=1.00
  271. fnum=0.55
  272. num=5.50 num_t=5 t=0.50
  273. num=55.00 num_t=54 t=1.00
  274. num=550.00 num_t=549 t=1.00
  275. num=5500.00 num_t=5499 t=1.00
  276. fnum=0.56
  277. num=5.60 num_t=5 t=0.60
  278. num=56.00 num_t=55 t=1.00
  279. num=560.00 num_t=559 t=1.00
  280. num=5600.00 num_t=5599 t=1.00
  281. fnum=0.57
  282. num=5.70 num_t=5 t=0.70
  283. num=57.00 num_t=56 t=1.00
  284. num=570.00 num_t=569 t=1.00
  285. num=5700.00 num_t=5699 t=1.00
  286. fnum=0.58
  287. num=5.80 num_t=5 t=0.80
  288. num=58.00 num_t=57 t=1.00
  289. num=580.00 num_t=579 t=1.00
  290. num=5800.00 num_t=5799 t=1.00
  291. fnum=0.59
  292. num=5.90 num_t=5 t=0.90
  293. num=59.00 num_t=58 t=1.00
  294. num=590.00 num_t=589 t=1.00
  295. num=5900.00 num_t=5899 t=1.00
  296. fnum=0.60
  297. num=6.00 num_t=5 t=1.00
  298. num=60.00 num_t=59 t=1.00
  299. num=600.00 num_t=599 t=1.00
  300. num=6000.00 num_t=5999 t=1.00
  301. fnum=0.61
  302. num=6.10 num_t=6 t=0.10
  303. num=61.00 num_t=60 t=1.00
  304. num=610.00 num_t=609 t=1.00
  305. num=6100.00 num_t=6099 t=1.00
  306. fnum=0.62
  307. num=6.20 num_t=6 t=0.20
  308. num=62.00 num_t=61 t=1.00
  309. num=620.00 num_t=619 t=1.00
  310. num=6200.00 num_t=6199 t=1.00
  311. fnum=0.63
  312. num=6.30 num_t=6 t=0.30
  313. num=63.00 num_t=62 t=1.00
  314. num=630.00 num_t=629 t=1.00
  315. num=6300.00 num_t=6299 t=1.00
  316. fnum=0.64
  317. num=6.40 num_t=6 t=0.40
  318. num=64.00 num_t=63 t=1.00
  319. num=640.00 num_t=639 t=1.00
  320. num=6400.00 num_t=6399 t=1.00
  321. fnum=0.65
  322. num=6.50 num_t=6 t=0.50
  323. num=65.00 num_t=64 t=1.00
  324. num=650.00 num_t=649 t=1.00
  325. num=6500.00 num_t=6499 t=1.00
  326. fnum=0.66
  327. num=6.60 num_t=6 t=0.60
  328. num=66.00 num_t=65 t=1.00
  329. num=660.00 num_t=659 t=1.00
  330. num=6600.00 num_t=6599 t=1.00
  331. fnum=0.67
  332. num=6.70 num_t=6 t=0.70
  333. num=67.00 num_t=66 t=1.00
  334. num=670.00 num_t=669 t=1.00
  335. num=6700.00 num_t=6699 t=1.00
  336. fnum=0.68
  337. num=6.80 num_t=6 t=0.80
  338. num=68.00 num_t=67 t=1.00
  339. num=680.00 num_t=679 t=1.00
  340. num=6800.00 num_t=6799 t=1.00
  341. fnum=0.69
  342. num=6.90 num_t=6 t=0.90
  343. num=69.00 num_t=68 t=1.00
  344. num=690.00 num_t=689 t=1.00
  345. num=6900.00 num_t=6899 t=1.00
  346. fnum=0.70
  347. num=7.00 num_t=6 t=1.00
  348. num=70.00 num_t=69 t=1.00
  349. num=700.00 num_t=699 t=1.00
  350. num=7000.00 num_t=6999 t=1.00
  351. fnum=0.71
  352. num=7.10 num_t=7 t=0.10
  353. num=71.00 num_t=70 t=1.00
  354. num=710.00 num_t=709 t=1.00
  355. num=7100.00 num_t=7099 t=1.00
  356. fnum=0.72
  357. num=7.20 num_t=7 t=0.20
  358. num=72.00 num_t=71 t=1.00
  359. num=720.00 num_t=719 t=1.00
  360. num=7200.00 num_t=7199 t=1.00
  361. fnum=0.73
  362. num=7.30 num_t=7 t=0.30
  363. num=73.00 num_t=72 t=1.00
  364. num=730.00 num_t=729 t=1.00
  365. num=7300.00 num_t=7299 t=1.00
  366. fnum=0.74
  367. num=7.40 num_t=7 t=0.40
  368. num=74.00 num_t=73 t=1.00
  369. num=740.00 num_t=739 t=1.00
  370. num=7400.00 num_t=7399 t=1.00
  371. fnum=0.75
  372. num=7.50 num_t=7 t=0.50
  373. num=75.00 num_t=74 t=1.00
  374. num=750.00 num_t=749 t=1.00
  375. num=7500.00 num_t=7499 t=1.00
  376. fnum=0.76
  377. num=7.60 num_t=7 t=0.60
  378. num=76.00 num_t=75 t=1.00
  379. num=760.00 num_t=759 t=1.00
  380. num=7600.00 num_t=7599 t=1.00
  381. fnum=0.77
  382. num=7.70 num_t=7 t=0.70
  383. num=77.00 num_t=76 t=1.00
  384. num=770.00 num_t=769 t=1.00
  385. num=7700.00 num_t=7699 t=1.00
  386. fnum=0.78
  387. num=7.80 num_t=7 t=0.80
  388. num=78.00 num_t=77 t=1.00
  389. num=780.00 num_t=779 t=1.00
  390. num=7800.00 num_t=7799 t=1.00
  391. fnum=0.79
  392. num=7.90 num_t=7 t=0.90
  393. num=79.00 num_t=78 t=1.00
  394. num=790.00 num_t=789 t=1.00
  395. num=7900.00 num_t=7899 t=1.00
  396. fnum=0.80
  397. num=8.00 num_t=7 t=1.00
  398. num=80.00 num_t=79 t=1.00
  399. num=800.00 num_t=799 t=1.00
  400. num=8000.00 num_t=7999 t=1.00
  401. fnum=0.81
  402. num=8.10 num_t=8 t=0.10
  403. num=81.00 num_t=80 t=1.00
  404. num=810.00 num_t=809 t=1.00
  405. num=8100.00 num_t=8099 t=1.00
  406. fnum=0.82
  407. num=8.20 num_t=8 t=0.20
  408. num=82.00 num_t=81 t=1.00
  409. num=820.00 num_t=819 t=1.00
  410. num=8200.00 num_t=8199 t=1.00
  411. fnum=0.83
  412. num=8.30 num_t=8 t=0.30
  413. num=83.00 num_t=82 t=1.00
  414. num=830.00 num_t=829 t=1.00
  415. num=8300.00 num_t=8299 t=1.00
  416. fnum=0.84
  417. num=8.40 num_t=8 t=0.40
  418. num=84.00 num_t=83 t=1.00
  419. num=840.00 num_t=839 t=1.00
  420. num=8399.99 num_t=8399 t=0.99
  421. fnum=0.85
  422. num=8.50 num_t=8 t=0.50
  423. num=85.00 num_t=84 t=1.00
  424. num=850.00 num_t=849 t=1.00
  425. num=8500.00 num_t=8499 t=1.00
  426. fnum=0.86
  427. num=8.60 num_t=8 t=0.60
  428. num=86.00 num_t=85 t=1.00
  429. num=860.00 num_t=859 t=1.00
  430. num=8599.99 num_t=8599 t=0.99
  431. fnum=0.87
  432. num=8.70 num_t=8 t=0.70
  433. num=87.00 num_t=86 t=1.00
  434. num=870.00 num_t=869 t=1.00
  435. num=8700.00 num_t=8699 t=1.00
  436. fnum=0.88
  437. num=8.80 num_t=8 t=0.80
  438. num=88.00 num_t=87 t=1.00
  439. num=880.00 num_t=879 t=1.00
  440. num=8799.99 num_t=8799 t=0.99
  441. fnum=0.89
  442. num=8.90 num_t=8 t=0.90
  443. num=89.00 num_t=88 t=1.00
  444. num=890.00 num_t=889 t=1.00
  445. num=8899.99 num_t=8899 t=0.99
  446. fnum=0.90
  447. num=9.00 num_t=8 t=1.00
  448. num=90.00 num_t=89 t=1.00
  449. num=900.00 num_t=899 t=1.00
  450. num=8999.99 num_t=8999 t=0.99
  451. fnum=0.91
  452. num=9.10 num_t=9 t=0.10
  453. num=91.00 num_t=90 t=1.00
  454. num=910.00 num_t=909 t=1.00
  455. num=9099.99 num_t=9099 t=0.99
  456. fnum=0.92
  457. num=9.20 num_t=9 t=0.20
  458. num=92.00 num_t=91 t=1.00
  459. num=920.00 num_t=919 t=1.00
  460. num=9199.99 num_t=9199 t=0.99
  461. fnum=0.93
  462. num=9.30 num_t=9 t=0.30
  463. num=93.00 num_t=92 t=1.00
  464. num=930.00 num_t=929 t=1.00
  465. num=9299.99 num_t=9299 t=0.99
  466. fnum=0.94
  467. num=9.40 num_t=9 t=0.40
  468. num=94.00 num_t=93 t=1.00
  469. num=940.00 num_t=939 t=1.00
  470. num=9399.99 num_t=9399 t=0.99
  471. fnum=0.95
  472. num=9.50 num_t=9 t=0.50
  473. num=95.00 num_t=94 t=1.00
  474. num=950.00 num_t=949 t=1.00
  475. num=9499.99 num_t=9499 t=0.99
  476. fnum=0.96
  477. num=9.60 num_t=9 t=0.60
  478. num=96.00 num_t=95 t=1.00
  479. num=960.00 num_t=959 t=1.00
  480. num=9599.99 num_t=9599 t=0.99
  481. fnum=0.97
  482. num=9.70 num_t=9 t=0.70
  483. num=97.00 num_t=96 t=1.00
  484. num=970.00 num_t=969 t=1.00
  485. num=9699.99 num_t=9699 t=0.99
  486. fnum=0.98
  487. num=9.80 num_t=9 t=0.80
  488. num=98.00 num_t=97 t=1.00
  489. num=980.00 num_t=979 t=1.00
  490. num=9799.99 num_t=9799 t=0.99
  491. fnum=0.99
  492. num=9.90 num_t=9 t=0.90
  493. num=99.00 num_t=98 t=1.00
  494. num=990.00 num_t=989 t=1.00
  495. num=9899.99 num_t=9899 t=0.99
  496. fnum=1.00
  497. num=10.00 num_t=9 t=1.00
  498. num=100.00 num_t=99 t=1.00
  499. num=1000.00 num_t=999 t=1.00
  500. num=9999.99 num_t=9999 t=0.99
  501. fnum=1.01
  502. num=10.10 num_t=10 t=0.10
  503. num=101.00 num_t=100 t=1.00
  504. num=1010.00 num_t=1009 t=1.00
  505. num=10099.99 num_t=10099 t=0.99
复制代码
为了便于分析,我出了一组数据,大家看看!
num=num*10;
num_t=(int)num;
t=t=num-(int)num;  
回复 支持 反对

使用道具 举报

发表于 2012-8-11 15:50:08 | 显示全部楼层
http://seapalace.blog.sohu.com/1586858.html
看看这个对你有启示不。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 15:50:22 | 显示全部楼层
总结上面的:1~100的数字中
除了 17 ~ 28 这些数字  num = (int)num
其它都是 num=(int)num +1

谁能知道原因?
回复 支持 反对

使用道具 举报

发表于 2012-8-11 15:57:44 | 显示全部楼层
这个问题首先要从浮点数的二进制表示说起,浮点数的小数表示是这样的。比如0.4=(1/2)*0+(1/4)*1+(1/8)*1+(1/16)*0+……实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够(float 23位,double 52位)就行了。这样0.56表示成二进制的嘶吼就省掉了点。所以乘以100就不是56了,而是55.9。。。。。9了,转换成int,就是55了.
回复 支持 反对

使用道具 举报

发表于 2012-8-11 15:57:46 | 显示全部楼层
找到了

参见IEEE 754标准
http://zh.wikipedia.org/wiki/IEEE_754


规约形式的浮点数
如果浮点数中指数部分的编码值在 exponent 之间,且尾数部分最高有效位(即整数字)是1,那么这个浮点数将被称为规约形式的浮点数。
[编辑]非规约形式的浮点数
如果浮点数的指数部分的编码值是0,尾数的最高有效位(即整数字)也是0,那么这个浮点数将被称为非规约形式的浮点数。IEEE 754标准规定:非规约形式的浮点数的指数偏移值比规约形式的浮点数的指数偏移值大1. 例如,最小的规约形式的单精度浮点数的指数部分编码值为1,指数的实际值为-126;而非规约的单精度浮点数的指数域编码值为0,对应的指数实际值也是-126而不是-127。实际上非规约形式的浮点数仍然是有效可以使用的,只是它们的绝对值已经小于所有的规约浮点数的绝对值;即所有的非规约浮点数比规约浮点数更接近0。规约浮点数的尾数大于等于1且小于2,而非规约浮点数的尾数小于1且大于0.

应该就是这个1造成的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 15:12 , Processed in 0.043558 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表