I write a lot of particle systems, and this behavior annoys me. In short, if you have a parameter like PSYS_SRC_ANGLE_BEGIN that requires a float, and you pass "0" to it, the particle system fails. The system returns an error, "PSYS_SRC_ANGLE_BEGIN requires float data".
It's technically accurate in its behavior: it checks that the next list parameter is a float, finds out it's not, and instantly bails out and complains. If I'd passed a vector, I'd expect something like this. But when I pass "0", instead of "0.0", it's like a slap in the face from an annoying brat; "you didn't say please!". It'd be fairly easy for it to simply cast the integer I pass into a float... after all, small integers like 0 can be represented precisely in a float.
Interestingly, PSYS_SRC_TARGET_KEY can take a key or a texture name in inventory. The key can be passed either as a string-value representation of a key or as an actual key type. So I know it's possible to take multiple data types and munge them into the proper type.
Requested solution: make functions like llParticleSystem and llSetPrimitiveParams just a tiny bit more intelligent as far as handling numerical data types.