/*
Forum: https://forum.arduino.cc/t/method-to-print-fixed-point-values/82093/3
Wokwi: https://wokwi.com/projects/388290041518382081
*/
void setup() {
Serial.begin(115200);
printFixedDec(-1003,0);
Serial.println(" mm");
printFixedDec(-1003,1);
Serial.println(" cm");
printFixedDec(-1003,3);
Serial.println(" m");
printFixedDec(-1003,6);
Serial.println(" km");
}
void loop() {
}
void printFixedDec( long val, int dotPosition) // we don't need no loops ...
{
String zeros = "0000000000";
String out = "";
char sign = ' ';
if(val < 0 ){
val = -val;
sign = '-';
};
out = String(val);
if (dotPosition > 0) {
int len = out.length();
if (len < dotPosition) {
out = zeros.substring(0,dotPosition-len+1)+out;
len = out.length();
}
out = out.substring(0,len-dotPosition)+"."+ out.substring(len-dotPosition);
}
Serial.print( sign+out );
}