# I need a decimal point in my LCD Display

This should be simple.

I am learning to write 8 bit numbers to my LCD display (its an I2C)

I have learned how to do leading zero blanking and right justify my numbers by using the following:

``````if ((ValueName) < 100) {
lcd.print(" ");  // this writes a space to shove the number over one place if the number is 2 digits
if ((ValueName) < 10) {
lcd.print(" ");  // this writes another space to shove the number over a total of 2 spaces if less than 2 digits
}
}
lcd.print(ValueName); // now write the number
``````

Now I would like to also show a value such as DEC 33 as 3.3

Can someone help me with a little piece of code to stick a decimal point in between the last two digits?

Greg

Are all your numbers 10x the value you want to print?

The easiest way is to print it as a floating point number.

``````lcd.print(value / 10.0, 1);
``````

The 1 tells it how many decimal places. You must use 10.0 vs 10 to make the number a float instead of an integer if value is an integer.

Alternatively you could print each digit separately using modulo math.
to get the integer and fraction/decimal portion as separate integers.
modulo is the integer remainder after you do an integer divide.

i.e. something like:

``````intnum = number / 10;
decnum = number % 10;
``````

intnum is the integer portion of the number divided by 10.
decnum is the portion to the right of the decimal.

If number was 34 then intnum would be 3 and decnum would be 4

Then print them separately:

``````lcd.print(intnum);
lcd.print('.');
lcd.print(decnum);
``````

--- bill

Bill,

I am sorry but the display in this picture is bright, but you can see that the MPH number now says 3.3 instead of 33.

``````// Now MPH
lcd.setCursor(14, 0); //(column, row)
lcd.print("   ");
lcd.setCursor(14, 0); //(column, row)
if ((Nemo[Speedo]) < 100) {
lcd.print(" ");
if ((Nemo[Speedo]) < 10) {
lcd.print(" ");
}
}

lcd.print((Nemo[Speedo]) / 10.0, 1);
``````