Actually, using a trapezohedron in place of a bipyramid will eliminate the need to read the answer from an edge in the 2 mod 4 case. Apparently this solution is already in use. https://en.wikipedia.org/wiki/Dice#Variants A similar problem exists for tetrahedral dice, which is solved by writing the number at the base of each exposed face (so each number appears in three places). See also: https://en.wikipedia.org/wiki/Dice#Rarer_variations Tom Tom Karzes writes:
Yes, rectangular parellelepiped works too. There are a bunch of other synonyms. You just need to be sure they're sufficiently qualified to restrict the faces to rectangles (and therefore the face angles to 90 degrees, and therefore the dihedral angles to 90 degrees).
Regarding fair dice, I only trust solutions where all faces are geometrically identical to each other. For a 6-sided die, you can use a regular dodecahedron, with opposite faces having the same number (or in fact any other numbering with two of each of the numbers from one to six). For a 5-sided die, you can use a regular icosahedron with four of each number.
An alternative strategy that works for even-numbers of six or higher is to use a bipyramind. This way you only need one face per number. Unfortunately, if the individual pyramids have odd numbers of faces (i.e., if the total number of faces is 2 mod 4), then you need to either read the result from the face on the bottom, or else paint the result on the exposed upper-edge. Or, you can double the number of faces and duplicate the numbers to avoid this problem.
For odd numbers, you could of course use twice the number of faces with duplicate numbers. You could also use a pyramid with n sides, then use a rounded base that forces it to land on a side. You'd have to be very careful to make the base perfectly symmetrical to avoid biasing the direction in which it tips. I don't particularly like this solution, but you could always paint the values on the rounded part, avoiding the problem of having to read them from the edges in the odd case.
A more elegant solution is to use curved sides, like the exposed surfaces of a peeled orange. Taper the ends and make them pointy (like an American football) so that it will always rest in the center of one of the sides. This will work for any number that's three or higher, although again, for an odd number of faces, you'd need to either read the answer from an edge or else double the number of faces.
Tom