El redondeo no funciona como lo planteas, así que no podrás usar la función round que poseen la mayoría de lenguajes.
Si lo que te piden es el redondeo como tal, primero debes estudiar los conceptos básicos de cifras significativas, y luego las reglas del redondeo. En resumen tu ejemplo debería quedar así:
45.23= 45.00
45.40=45.00
45.70=46.00
45.80=46.00
Si lo que te piden es ese "redondeo" que muestras en el ejemplo, puedes tomar la idea que te dan arriba, comparando lo que viene después del punto en un switch, pero debes tener claro cuales serán los criterios para determinar cuando "redondeas" a 0 o a 0.5. Por ejemplo, ¿45.35 a que lo redondeas? ¿a 45.0 o a 45.5?
Saludos