If you pass a number as the second argument when printing a floating point value, that will be how many decimal points you get. Keep in mind that 32-bit floats are only accurate to like 5 decimal places, and both float and double are the same in arduino - 32-bit floating point.
double a = 177.51479;
Serial.println(a,5);// print à with 5 decimal. If 5 is omitted 2 is the default
and the other one is compiler’s default behavior, it takes the smallest numerical container (starting with int) that can represent your data and use that type to perform the computation, promoting the other literals to the larger container required as the computation goes. So if you have an int divided by an int then you do math with int (and loosing decimal part), if you have at least one float and an int then the math is done in float so try
double a = 169.0 / 60; // or 169/60.0 or 169.0/60.0 or ((float) 169) / 60 ..
Serial.println(a,5);// print à with 5 decimal. If 5 is omitted 2 is the default