ElectionsOnline was among the first to permit assigning a weight to ballots. While the default weight for a ballot is 1, it may be set to allow for varying differences in the number of times a ballot is counted. An example might be an election for board of directors at a condominium complex. Suppose an individual owns five units in the complex and that he is permitted to cast one ballot for each unit owned. That’s five ballots. This voter could be entered into the voter roster five separate times, each with a distinct username and password, which would require him to pass through the ballot five times, or, much simpler (and cheaper since pricing is based on the number of eligible voters), assign him a ballot weight of five which ensures his ballot will be tabulated as if five separate, but identical, ballots were cast.
The above is a simple scenario, so let’s add a bit more complexity to it. Suppose a condominium unit is owned by two individuals. This means each owner owns half a unit and should have their ballot counted accordingly. Subsequently, we begin getting into decimals, in this example, .5. The election system only accepts whole numbers for ballot weight because instructing a database to accept decimals means having to also instruct it about the desired level of precision for that decimal. In other words, how many digits to the right of the decimal point can the database allow? Because Evote is built to be flexible and meet the needs of as broad a range of election requirements as possible, ballot weighting isn’t customized to any one client’s level of decimal precision. Furthermore, as stated in Microsoft’s own documentation, “The Decimal data type is the slowest [performing] of all the numeric types.” So, whole numbers it is since that works virtually all the time!
The solution then, when a client’s ballot weighting requires decimals, is to simply multiply the ballot weight by 10, 100, 1000, whatever is necessary in order to convert it to a whole number prior to loading the voter roster into the system.
In our example, the owner who owns five units would have his ballot weight set to 50 (5 x 10 = 50) and the two owners who co-own a single unit would each have their weight set to 5 (.5 x 10 = 5). The important thing is that whatever multiple of 10 is used to increase a voter’s ballot weight so that it becomes an integer, must be applied to all voters. You can’t multiply by 10 for one voter and 100 for another without spoiling the election by losing the balance between all voters.
At the conclusion of the election, when you retrieve the results, you may wish to manually divide the total number of votes received by whatever multiple of ten they were multiplied by before the start of the election. (10 in the example above.) This would restore them to counts which more truly represent the voters’ weight before being multiplied. But doing so isn’t necessary. The point of the election is to determine who won, and by what margin. Whether or not the results are divided by some multiple of ten does not impact that.