you need to print the integer part after you print the sign. try this:
void setup(){
Serial.begin(9600);
}
void loop()
{
unsigned int precision =100;
unsigned int frac;
double val;
double valr;
val = 567; // expected result = -0,91 (actual 0,-91)
// val = 560; // expected result = -4,33 (actual -4,-33)
// val = 618; // expected result = 24,01 (actual 24,01)
val = val - 10; // calibration of LM335
val = val * 0.48875; // 5/1023 * 100
valr = val - 273.15; // Kelvin to Celsius
Serial.print("Analog 0: ");
if(valr < 0.0){
Serial.print('-');
valr = -valr;
}
Serial.print(int(valr)); //prints the int part
Serial.print(","); // print the decimal point
frac = (valr - int(valr)) * precision;
int frac1 = frac;
while( frac1 /= 10 )
precision /= 10;
precision /= 10;
while( precision /= 10)
Serial.print("0");
Serial.print(frac,DEC) ;
Serial.print(" °C");
}