作者iloveduck (猴子)
看板ASM
標題[問題]keil c小數位數
時間Sun Jan 1 23:06:39 2012
目前小弟在想把某個數值的每一個數字個別存起
例
float a=0.12345678,c=0;
long b=0;
main()
{
while(1)
{
a=a*10000000; // a變成1234567.8
b=a; // b變成1234567
c=b*10-a*10; //c變成8
}
}
接著把c值顯示在七段上 發現不會是8
問題是出在哪呢
或者有其它方法可以直接取出小數第八位以後的方法
printf功能及怎麼使用
謝謝大家回答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.177.158
※ 編輯: iloveduck 來自: 114.39.177.158 (01/01 23:25)
1F:推 lion21:C=A*10000000%10 01/01 23:35
2F:推 ksmrt0123:float的精度應不到10進位小數點後8位 01/02 14:16
3F:→ ksmrt0123:修正: float的精度只有10進位約7位數字 01/02 15:09
4F:→ iloveduck:用DOUBLE可以解決這個問題嗎 01/02 15:23
5F:→ ksmrt0123:keil c51沒有真正的double precision浮點數喔 01/02 17:00
6F:→ ksmrt0123:宣告double仍是32 bits, 一樣是single precision 01/02 17:01
7F:→ iloveduck:所以說有效位數只有到七位沒有其它方法再多嗎 01/02 17:12
8F:→ iloveduck:先謝謝KS大為我解惑 01/02 17:13
9F:→ iloveduck:有效位數指的是小數位數還是有加上整數部分 01/02 17:31
10F:→ iloveduck:哪一個呢 01/02 17:32
11F:→ ksmrt0123:有效位數指整數加小數, 123.4567 = 7位 01/02 17:49
12F:→ iloveduck:感恩 01/02 18:05
13F:推 jackjack0040:早一點版本只有六位數字精確~ 01/04 13:38
14F:→ iloveduck:納新版有支源到八位以上嗎 第幾版呢 01/05 01:01