The present system of voting in HB has just two descrete values: (neglecting the neutral vote which does not contribute) Either the idea is a hit (vote for), or it is a miss (vote gainst).
Somewhat similar to digital signals (descrete values) either a "zero" or a "one". they do not incorporate the analog
factor.
What i'm trying to convey is that a person is only 51% approved with a particular idea, but he goes for the idea inspite of the fact that he did'nt like it 49%(not a negligible figure when compared with 51).

Simple Maths:
Lets introduce the system of relative scores for the ideas having a range 0 thru 10. (decimal precission of 1 digit is allowed - ex 9.1 is allowed but not 9.11 like in fashion shows). This way we can get a whole range of emotions for the ideas. If you dont approve of it simply give it a "0".
then the percentage of the scores can be taken with the denominator as the maximum possible score for the idea depending upon the number of voters.
let say this idea gets a score of:
7.2 , 8.5 , 10.0 , 5.8, 0.0 , 9.9
we say that 6 voters have cast thier votes and the maximum possible score was 60.0 but the idea managed to get only 41.4 (sum total of the score given by different voters). so the percentage score for the idea would be 41.4*100/60 = 69%.
hey we can even have fishbone scores for the same idea, we can negate the scores with respect to 100.
for example if i got 69% in favor of my idea, it also means that i didnt get 31% in my favor, ==> 31% were against me. so this idea would get a 31% fishbone and a 69% bake!

This is already implemented: if an idea is very very good (score 9.5) you're more likely to vote than if it's only very slightly good. Thus by the law of large numbers, etc, fractional voting already exists. (Unless everybody already votes on every idea, which somehow I doubt.)

To avoid [Blumster]'s problem, the system would have to internally keep track of the frequency distribution of scores each user gives out. For example, if phundug has voted "0,0,0,0,0,1,2,6,7" on his previous votes, and now votes a "9", the system will have to record "+3 standard deviations" or whatever. And the total croissantage is a function of everyone's standard deviations, not their actual votes.

This can already be done. For example, this idea with 2 votes for and 14 against is 14% bun and 85% bone. Now I cannot vote on it, or I will have to redo my math.