请问double类型我用串口显示怎么有10位小数?
double Xg;
void setup() {
Serial.begin(9600);
}
void loop() {
Xg=3/5.00;
Serial.println(Xg,DEC);
delay(1000); // wait for a second
}
改 float Xa; 林定祥 发表于 2015-11-26 14:49 static/image/common/back.gif
改 float Xa;
改了还是这样的 你知道 Serial.print(double, int) 是什麼意思嗎?
你在列印 double/float 之後加上 DEC, 本身就有問題.
被調用 Serial.print(double, int), 之後的 int 就是說明小數後的數字.預設為 2.
而 DEC 的定義值為 10, 所以 Serial.print(double, 10) 就是要印出小數後10個位的 double.
float 跟 double 在這裡是沒分別的.
Super169 发表于 2015-11-26 17:22 static/image/common/back.gif
你知道 Serial.print(double, int) 是什麼意思嗎?
你在列印 double/float 之後加上 DEC, 本身就有問題....
感谢!终于搞明白了 转换成字符串试试。
干嘛要小数输出呢?
也可以把要输出的数字分步打印;
例如:12.345
主要程序如下:A=12.345/1;//得到12;
B=((12.345-A)*1000)/1;//除以1是为了得到整数
打印输出: Serial.print(A);
Serial.print(“.”)
Serial.println(B)//记得加“ln”换行。
试试吧分步打印。但是数字的精度就看自己的取舍了。 本帖最后由 Super169 于 2015-11-27 09:41 编辑
PINKWALKMAN 发表于 2015-11-27 08:13 static/image/common/back.gif
转换成字符串试试。
干嘛要小数输出呢?
也可以把要输出的数字分步打印;
Serial.print (正式來說, 是源自 print) 本來就有針對 整數 及 小數 的兩個處理程序, 不用自己做吧.
你的做法也不用加上 "/1" 作轉換, 系統本來就可以做這種簡單的轉換, 加上 "/1" 只是畫蛇添足, 而且程式中也有錯.
試想想 1.01 的數值, 你會印出什麼?
天天向上/tp 发表于 2015-11-26 19:06 static/image/common/back.gif
感谢!终于搞明白了
真的明白了?那麼改成以下,會有甚麼結果? (純粹交流,增加知識,不是吐糟,請明白!)
(一) Serial.println(Xg,0);
(二) Serial.println(Xg,150);
(三) Serial.println(Xg,300);
(三) Serial.println(Xg,600); Super169 发表于 2015-11-27 09:38 static/image/common/back.gif
Serial.print (正式來說, 是源自 print) 本來就有針對 整數 及 小數 的兩個處理程序, 不用自己做吧.
...
個人感覺,從初學者的理解的角度看,原回覆是很有啟發價值的,值得欣賞!
而回覆的補充,是指出進階學習的途徑,是相當有益的。
謝謝兩位! eddiewwm 发表于 2015-11-27 10:03 static/image/common/back.gif
真的明白了?那麼改成以下,會有甚麼結果? (純粹交流,增加知識,不是吐糟,請明白!)
(一) S ...
給你這麼一問, 我才發現 print.h 跟 print.cpp 有點出入.
header 的設定是:
size_t print(double, int = 2);
但最後的程式, 分開後就變成了:
size_t Print::printFloat(double number, uint8_t digits)
會出現什麼影響, 還是留待樓主測試一下吧. 本帖最后由 Super169 于 2015-11-27 14:37 编辑
eddiewwm 发表于 2015-11-27 10:21 static/image/common/back.gif
個人感覺,從初學者的理解的角度看,原回覆是很有啟發價值的,值得欣賞!
而回覆的補充,是指出進階學習 ...
系統的源碼, 往往提供了很多值得學習的地方 (相信不會有太多人有興趣去看:L).
有關列印小數的部份, 在 print.cpp 中的 printFloat 就有清楚的做法, 當中也是分開整數及小數兩部份去處理, 對小數後的顯示, 有針對以零開始的小數部份的處理分法.這部份跟整數部份不可以用同一方法直接 print, 否則就會失去了開頭的 0.
天天向上/tp 发表于 2015-11-26 19:06 static/image/common/back.gif
感谢!终于搞明白了
看过Reference只读了前一般,其实后一半也解释用法.学习了.
页:
[1]