Some rates of fire lose a noticeable amount of precision with only one decimal place. The most common is 3.75 / second, but slower firing weapons are even worse. For instance, the Ares Plasma Archcannon fires 0.75 / second and goes up to 0.9375 (I think) with an optimizer ROM. In game, these display as 0.8 and 0.9.

nms 1 Feb 2016:

I found a way to use standard C libraries to achieve this formatting. Note that %g will switch to scientific notation if the exponent is >= the precision or < -4, but that isn't an issue here.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	char s[10];
	int rate;
	for(rate = 1; rate <= 75; rate++){
		sprintf(s, "%.2f", (double) 30 / rate);
		sprintf(s, "%g", strtod(s, NULL));
		puts(s);
	}
	return 0;
}

This produces:

30
15
10
7.5
6
5
4.29
3.75
3.33
3
2.73
2.5
2.31
2.14
2
1.88
1.76
1.67
1.58
1.5
1.43
1.36
1.3
1.25
1.2
1.15
1.11
1.07
1.03
1
0.97
0.94
0.91
0.88
0.86
0.83
0.81
0.79
0.77
0.75
0.73
0.71
0.7
0.68
0.67
0.65
0.64
0.63
0.61
0.6
0.59
0.58
0.57
0.56
0.55
0.54
0.53
0.52
0.51
0.5
0.49
0.48
0.48
0.47
0.46
0.45
0.45
0.44
0.43
0.43
0.42
0.42
0.41
0.41
0.4