Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >十进制与整数;给定一个固定的数值范围,哪一个更适合精确计算?

十进制与整数;给定一个固定的数值范围,哪一个更适合精确计算?
EN

Software Engineering用户
提问于 2014-10-15 05:48:18
回答 1查看 425关注 0票数 4

在与别人进行了“激烈的讨论”之后,我想为了子孙后代的利益,我会问这个问题。如果我的假设是不正确的,我愿意被纠正,但是我希望听到一个比我更有信誉的人的第三方意见。

让我们假设我们需要计算和存储以十进制格式表示的数值。然而,所有的数值输入和输出都必须符合特定的数值范围。此外,小数是很重要的,但是我们永远不会对任何小于小数位的值感兴趣。这对任何计算都是正确的。如果计算结果在10^-8范围内包含有效数字,则基本上为0。同样,如果值高于我们的上限,那么这将被认为是一个错误案例。

考虑到这些永远不会改变的固定约束,使用传统的十进制(S,p)数据类型更好,还是使用一个整数类型,它可以包含所有的值表示的值S-固定的十进制数字向左移动?例如,为了效率和准确性,我们应该使用0到2,100,000,000,000,000,000,000,000,000之间的整数来表示.00000001和21,000,000,000之间的所有值,还是应该使用定义为(8,16)的小数?

澄清

我的具体讨论是关于MySQL中的数据类型。假设大多数十进制表示都以标准化格式存储,我更愿意使用泛型响应。但是,如果十进制类型定义没有可靠的“标准”,请考虑这个问题,因为它与MySQL有关。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-10-15 12:36:41

对于数据库存储,小数。

TL博士背景故事

如果您主要是在主内存中处理这些结果,则可能会造成混乱。有许多小范围浮点/小数点问题可以用缩放整数和不动点数学来解决。例如,我在整数域中求解了这个最近堆栈溢出造成的分区问题,然后以浮点的形式返回答案。我还看到许多文本格式和图形布局算法使用类似的近似。整数的数学是简单的,非常快,而且运行良好。

但是,在不进一步限制您的用例的情况下,也存在一些缺点,例如,这将成为您的责任

  • 提供您可能需要的任何数学函数,如sinsqrt
  • 将自定义缩放整数转换为您可能需要的其他类型,如将格式设置为字符串、浮点数和正确的十进制类型。

这是“一个简单的努力问题”,但是正确处理这些事情的细节可能会让你对你的主要编码目标感到烦恼和分心。

此外,您特别感兴趣的是将这些值存储在数据库中。这意味着永久性和长的数据生存期。如果我们对这个行业的固定精度数据有什么了解的话,那就是需求会随着时间的推移而改变,然后你将不得不改变你的数据,以及使用它们的应用程序。想想Y2K金融市场十进制吧。固定点似乎是一个坚实的基础,但几年后,你对十进制精度的需求可能会发生变化。当300 dpi打印机看起来不可能有高分辨率时,选择打印机内部的比例尺当1200 dpi打印机和2400 dpi打印机在几年后滚动时并不是那么精确。

因此,如果您对适合特定问题的高效内存表示感兴趣,定点可以很好地工作。但是如果随着时间的推移你要存储数据,小数就会产生一个更丰富、更符合未来的表达方式,让别人负责工作,让你回到你自己的开发任务中去。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/260072

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文