当前位置:  开发笔记 > 数据库 > 正文

当数字大于1时,是否有充分的理由存储小于1的百分比?

如何解决《当数字大于1时,是否有充分的理由存储小于1的百分比?》经验,为你挑选了2个好方法。

我继承了一个使用SQL Server 200x的项目,其中存储一个始终被视为问题域中百分比的值的列存储为大于1的十进制等值.例如,70%(0.7,逐字地)被存储为70,100%作为100除了需要等记住*0.01上检索到的值和*100持续值之前,它似乎并不成为一个问题在其本身.它确实让我的脑袋爆炸 ......所以有一个很好的理由让我失踪吗?是否有令人信服的理由来解决它,因为有相当数量的代码编写与伪百分比一起使用?

有一些情况发生了大于100%,但我不明白为什么这个值不会仅仅存储为1.05,例如,在这些情况下.

编辑:头部感觉更好,更聪明.感谢您的所有见解.



1> P Daddy..:

实际上有四个很好的理由我可以想到你可能想要存储 - 并计算整数百分比值而不是浮点数当量:

    根据所选的数据类型,整数值可能占用较少的空间.

    根据数据类型,浮点值可能会丢失精度(请记住,并非所有语言都具有与SQL Server类型等效的数据decimal类型).

    如果该值将非常频繁地输入或输出给用户,则将其保持为更加用户友好的格式可能更方便(当您计算时显示和转换时转换之间的决定...但请参阅下一点).

    如果原则值也是整数,那么

    principle * integerPercentage / 100
    

    它使用所有整数运算通常比它的浮点等价更快(在浮点类型相当于T-SQL 类型的情况下可能明显更快decimal).



2> Andrew Bullo..:

如果它是一个字节字段,那么它在数据库中占用的空间比浮点数少,但除非你有数百万条记录,否则几乎看不出差异.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有