96SEO 2026-02-20 07:55 0
符号位1位表示数值的正负。

指数部分通常8位或11位取决于单精度或双精度表示数值的大小范围。
尾数部分也称为有效数字通常23位或52位表示数值的精确度。
其中尾数通常以“隐式1”形式存储即在规范化数中尾数前总是有一个1。
3.4×10383.4×1038精度约为7位十进制数字。
双精度浮点数64位可表示的范围大约是
1.7×103081.7×10308精度约为15位十进制数字。
记录余数从最后一次除法的余数开始逆序读取余数即可得到二进制表示。
符号位0指数部分10000101尾数部分111100010101011...填充至23位。
浮点数使用固定的位数来表示数值如单精度32位或双精度64位这意味着只能表示有限数量的数字和小数位。
某些十进制数在二进制中无法精确表示。
0.1无法精确表示计算机只能用近似值来存储。
这种近似会导致在进行算术运算时产生舍入误差。
浮点运算的顺序会影响结果。
例如先加后乘与先乘后加的结果可能不同尤其是在涉及多个浮点数时累计的舍入误差会更加明显。
浮点数的标准化过程使得小数点位置的变化可能导致精度损失特别是在处理非常大或非常小的数时这种损失可能更加明显。
由一台机器决定计算结果只计算一次且认定这个值为准确值把这个值传递给其他设备或模块只用这个变量结果进行判断也省去了多次计算浪费CPU内存空间。
浮点数和整数的计算方式都是一样的只是小数点部分不同而已。
我们完全可以通过把浮点数乘以10的幂次得到更准确的整数也就是把自己需要的精度用整数表示。
比如保留3位精度所有浮点数都乘以10
000得到的结果是完全相等的。
再举例原来2.5/3.1×5.1与0.8064×5.1都只是约等于4.1126用整数替代2500/31×51与80×51等于4080把4080看成4.08虽然精度出现问题但是前两者结果不一致而后两者结果完全相同使用整数来代替小数使得一致性得到了保证。
如果你觉得用整数做计算的精度问题比较大则可以再扩大数值到10的幂次扩大后如果是250
290是不是发现精度提高了但问题又来了若通过乘以10的幂次来提高精度当浮点数值比较大时就会超出整数的最大上限2^32-1或者2^64-1。
如果你觉得精度可以接受并且数值计算的范围肯定会被确定在32位或64位整数范围内则可以用int和long类型的方式来代替浮点数。
浮点数在计算机中是用V(-1)^s×(1.M)×2^(e)公式表示的也就是说浮点数的表达其实是模糊的它用了另一个数乘以2的幂次来表示当前的数。
定点数则不同它把整数部分和小数部分拆分开来都用整数的形式表示这样计算和表达都使用整数的方式。
由于整数的计算是确定的因此就不会存在误差缺点是由于拆分了整数和小数两个部分都要占用空间所以受到存储位数的限制占用字节多了就会使用64位的long类型整数结构来存储定点数这会导致计算的范围相对缩小。
与浮点数不同使用定点数做计算能保证在各设备上计算结果的一致性。
C#有一种叫decimal的整数类型它并非基础类型是基础类型的补充类型是C#额外构造出来的一种类型可以认为是构造了一个类作为数字实例并重载了操作符它拥有更高的精度却比float范围小。
它的内部实现就是定点数的实现方式我们完全可以把它看成定点数。
C#的decimal类型数值有几个特点需要我们重点关注它占用128位的存储空间即一个decimal变量占用16字节相当于4个int型整数大小或2个long型长整数大小比double型还要大1倍。
它的数值范围在±1.0×10^28到±7.9×10^28之间这么大的占用空间却比float的取值范围还小。
decimal精度比较大精度范围为28个有效位另外任何与它一起计算的数值都必须先转化为decimal类型否则就会编译报错数值不会隐式地自动转换成decimal。
看起来好用的decimal却不是大部分游戏开发者的首选。
使用C#自带的decimal定点数存在诸多问题。
最大问题在于无法与浮点数随意互相转换因此在计算上需要进行一定的封装要么提前对float处理要么在decimal的基础上封装一层外壳类以适应所有数值的计算。
精度过大导致CPU计算消耗量大128位的变量、28位的精度范围计算起来有比较大的负荷如果大量用于程序内的逻辑计算则CPU就会不堪重负。
内存也是如此大量使用会使得堆栈内存直线飙升这也间接增大了CPU的消耗。
因此它只适用于财务和金融领域的软件对于游戏和其他普通应用来说不太合适其根源是不需要这么高的精度浪费了诸多设备资源。
实际上大部分项目都会自己实现定点数具体实现如前面所说的那样把整数和小数拆开来存储用两个int整数分别表示整数部分和小数部分或者用long长整型存储前32位存储整数后32位存储浮点数long型存储会更好它便于存储和计算。
这样无论是整数部分还是小数部分都用整数表示并封装在类中。
因此我们需要重载override所有的基本计算和比较符号包括、-、*、/、、!、、、、这些符号都需要重载重载范围包括float浮点数、double双精度、int整数、long长整数等。
除了以上这些为了能更好地融合定点数与外部数据的逻辑计算还需要为此编写额外的定点库包括定点数坐标类、定点数Quaternion类等来扩展定点数。
这看起来比较困难其实并不复杂只要静下心来编写就会发现不是难事。
将定点数与其他类型数字的加减乘除做运算符重载如果涉及更多的数学运算则再建立一个定点数数学库存放一些数学运算的函数再用编写好的定点数类去写些用于扩展的逻辑类仅此而已都是只要花点时间就能搞定的事Github上也有很多定点数开源的代码可以下载下来参考或者把它从头到尾看一遍将它改成适合自己项目的工具库。
如果想要精确度非常高定点数和浮点数无法满足要求那么就可以用字符串代替浮点数来计算。
但它的缺点是CPU和内存的消耗特别大只能做少量高精度的计算。
我在大学里做算法竞赛题目时就遇到过这种检验程序员的逻辑能力和考虑问题全面性的题目题目很简单A×B或A-B或AB或A/B输出结果精度要求在小数点后100位。
我们把中小学算术的笔算方式写入程序里把字符串转化为整数并用整数计算当前位置接着用字符串形式存储数字这样的计算方式完全不需要担心越界问题还能自由控制精度。
缺点是很消耗CPU和内存比如对于123
8这种类型的计算使用字符串代替浮点数一次的计算量相当于计算好几万次的普通浮点数。
所以如果程序中对精度要求很高且计算的次数不多这种方式可以放在考虑范围内。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback