我正在开发一个程序,您可以在其中选择最多3项要分配的内容。
比如说一个动作可以获得4分,并且在你选择的3件事中,这4分被分配。
在这种情况下,这三件事各得1.33333 ......分。
在我的数据库中,它们存储为1.33。
然而,当我把它们拿出来时,它最高可达3.99。
可以理解的。
但是如果不给出1.34分之一的话,我怎么能避免这种情况?
答案 0 :(得分:5)
将完整的float / double存储在数据库中,而不是截断到2个小数位。截断的时间是向用户显示值 - 但仅截断显示的字符串,而不是实际值。
浮点值是计算的醉酒叔叔。只要让它们成为现实,然后在向公众展示时清理它们。
答案 1 :(得分:2)
在这种情况下,浮点数将是有损的。如果您正在处理整数分子和分母,为什么不将数字存储为分数?您可以使用Pear's Math Fraction library或自己写一些东西。
答案 2 :(得分:0)
使用小数点后三位 - 不显示,但仅用于跟踪精度。如果有人将3分分为3分,则将其存储为1.333。当你计算回来时,你会得到3.999,你可以得到4个。另一方面,如果有人在三个对象中划分3.99,则将其存储为1.33,所以当你计算回来时,得到3.99(而不是3.999)因此你知道不要围捕。