怎么解决double精度丢失
作者:Circaboy
前言
之前14700K才发布,我就直接入手了一块,总体来说,14代CPU最值得升级的还是i7-14700K,毕竟这个U是升级幅度最大的一块。
之前我是在我的Z790上面试了试i7-14700K,好消息是Z790的供电其实还是够用的,坏消息是大部分用户其实并不需要Z790这么高端的主板。我14700K的文章评论区有人问我是不是一定要Z790才行?普通的B760行不行?
为了测试一下这个结果,我就搞了一块技嘉B760M 冰雕X 主板来试试。目的就两个:一个是试试这个主板能不能撑得起来14700K的处理器,另一个就是看它能不能完美发挥14700K的性能。
目前我给这个搭配的是:
CPU:i7-14700K
显卡:蓝戟A770
硬盘:爱国者P7000Z
主板:技嘉B760M ELITE X AX主板
内存条:金百达刃 16GX2 6800MHz
机箱:Tuf机箱
电源:Prime 750W电源
开箱
![](https://p0.ssl.img.360kuai.com/t01a47770b0210a0eb9.jpg)
技嘉B760M 冰雕X 跟前面的不一样的地方在于,它采用了之前大部分放在高端主板上才会用的大面积散热甲设计,整体的观感与性能都相当不错。
![](https://p0.ssl.img.360kuai.com/t016f80442bd10b4823.jpg)
而更不错的是它的PCB采用的白色设计,在千元级别的主板里面,采用白色PCB板的产品其实并不是很常见。现在大家都喜欢做白色主题的装机设计,如果要完全的内外纯白的话,这类白色PCB设计的主板才是第一选择。
8层PCB,在系统集成密度、信号质量、电源完整性与低EMI方面做到了很不错的平衡。
![](https://p0.ssl.img.360kuai.com/t01642284a15ffeaffc.jpg)
原本我还担心i7-14700K上主板之后主板供电会不会很紧张但是跑完之后我才发现,其实 技嘉B760M 冰雕X 早就应对这样的大电流需求情况做了优化。
它这个的14+1+1相供电撑i7-14700K真的轻轻松松,比有些丐版的Z790还棒,这旁边的是7+7相并联电源设计,加上高可靠性的电感电容,能保证非常稳定的电源供应。PWM控制器为NCP81530R,14+1供电采用DrMOS设计,型号为安森美onsemi的NCP302155,电流单相输出60A,轻松驾驭12代13代和14代的i7/i9。
![](https://p0.ssl.img.360kuai.com/t019cfffa514996d1dc.jpg)
技嘉B760M 冰雕X 主板支持四根DDR5内存插槽,同时支持双通道模式。
DDR5最大频率支持4800MHz - 8266MHz(O.C.) ,后期通过更新BIOS频率还能更高。
要想榨干自己内存条的性能,我建议还是买这类新款主板,搭配的内存条也一定要海力士A-die的颗粒。
![](https://p0.ssl.img.360kuai.com/t01d221158bf7f7fcae.jpg)
覆盖的金属散热甲部分,都是技嘉全新设计的VRM散热甲,采用了一体成型的复合式剖沟设计,散热面积相对来说更大,应对PCIe5.0协议下的硬盘的高发热也能一战。
![](https://p0.ssl.img.360kuai.com/t017a5e500da9cdbeac.jpg)
固态硬盘部分,采用的免螺丝快拆设计,我很喜欢这个小功能,意味着我自己加装更换固态硬盘的时候就不用拿着螺丝刀拆来拆去了。
![](https://p0.ssl.img.360kuai.com/t0125deb0b61033b347.jpg)
显卡的PCIe接口部分也做了金属覆盖,应对现在越来越大的显卡是毫无压力,能做到显卡10倍重量的承重效果。如果你上4090这样的卡的话,就完全不需要担心显卡太重把PCIe接口压弯掉了。
![](https://p0.ssl.img.360kuai.com/t01cc2c82e59d1c05c8.jpg)
提一个小设计点, 技嘉B760M 冰雕X 主板上还给了一个内置的HDMI接口,为的就是给那些机箱带屏幕的用户准备的,比如乔思伯D41 标准副屏版这样的机箱。
![](https://p0.ssl.img.360kuai.com/t01b57b95b196076504.jpg)
乔思伯D41 标准副屏版的机箱内置的屏幕可以把主板的一些信息直接展示在机箱上,这样的设计其实越来越多地开始出现在一些高端的主机上,甚至现在龙神三之类的水冷散热器都是自带小屏幕的,这时候像 技嘉B760M 冰雕X 这样内部就设计了HDMI接口用于内部屏幕输出的主板,肯定是更容易打动人的。
![](https://p0.ssl.img.360kuai.com/t01f8a90634437d874a.jpg)
外部接口部分:USB2.0**4,WIFI 6E,HDMI*1,DP*1,Type-C*1,USB3.2 Gen2*1,USB3.2 Gen1*3,2.5G有线网接口。算是比较常规的接口配置了。
14代CPU上机性能测试
![](https://p0.ssl.img.360kuai.com/t019c0ff1d8905e7912.jpg)
Intel的i7-14700K暴露出来的信息其实已经差不多了,我拿到手之前也看得差不多了。
![](https://p0.ssl.img.360kuai.com/t01feb523b3648485ca.jpg)
所以我想说点有用的总结:首先是我手里的旧的主板必须要升级bios才能识别运行i7-14700K,升级bios之后能稳定跑,毕竟还是LGA1700的口,并且命名方式并没有跟传闻中那样变成Intel Ultra系列。
但是如果你是买的 技嘉B760M 冰雕X 这样的新的主板,那就没必要升级bios,它出厂就能直接上14代CPU跑了。
其次是我尝试了一下不同的散热:单塔单风扇风冷肯定是压不住i7-14700K的,开机温度就直接上80了,双塔双风扇风冷能勉强压住i7-14700K,开机温度稳定在37,但是满载情况下温度直接飙升稳定到85度,360的水冷也能勉强压住i7-14700K,开机温度稳定在35,满载情况下温度稳定在80度。
![](https://p0.ssl.img.360kuai.com/t0102a615e71303ccaa.jpg)
我上360水冷用AIDA64烤机,开烤之后温度直接稳定在81。所以大部分人在换14代U的话,不需要换主板也不需要换散热,原来自己就有的360水冷就能直接抗上去。
这个是我上双塔风冷烤机之后的温度,i7-14700K双塔风冷烤的话温度能稳定在84度,相对于水冷来说高了4度,并且风冷风扇的满载情况是噪声特别大,所以有条件的老哥还是老老实实上360水冷压一下它吧。
![](https://p0.ssl.img.360kuai.com/t01ca08e4c2995fb52b.jpg)
上CPU-Z看了看参数,i7-14700K的TDP识别出来是125W,还是1700LGA的插槽,核心频率5.4GHz,核心部分是8个大核12个小核,也就是它是20核28线程,三级缓存给的是33MB。
对比之下,上一代的i7-13700K给的TDP也是125W,给的是16核24线程,三级缓存只给了30MB。这么一对比,14代的i7提升幅度还是相当大。
![](https://p0.ssl.img.360kuai.com/t01bb480ab727fd7f42.jpg)
科普一下,为了弥补 CPU 与内存两者之间的性能差异, CPU 内部引入了CPU Cache,也称高速缓存。 CPU Cache用的是 SRAM(Static Random-Access Memory)的芯片,也叫静态随机存储器。其只要有电,数据就可以保持存在,而一旦断电,数据就会丢失。CPU Cache 通常分为大小不等的三级缓存,分别是 L1 Cache、L2 Cache 和 L3 Cache。
程序执行时,会先将内存中的数据加载到共享的 L3 Cache 中,再加载到每个核心独有的 L2 Cache,最后 进入到最快的 L1 Cache,之后才会被 CPU 读取。
所以三级缓存越大的CPU,多程序加载运行的效率就会越高。
![](https://p0.ssl.img.360kuai.com/t01f3df7abd5c8a55ee.jpg)
上AIDA64跑了一下benchmark,在同样主板的前提下,单精度算力部分,i7-13700K是1247GFlops,i7-14700K是2141GFlops,提升幅度71%;双精度算力部分i7-13700K是622.9GFlops,i7-14700K是1070GFlops,提升幅度71%;24位整数运算部分,i7-13700K是489.1GFlops,i7-14700K是836.6GFlops,提升幅度71%;32位整数运算部分提升幅度是71%;64位整数运算部分提升幅度80%;i7-14700K的AES-256加解密性能提升80%,SHA-1 Hash校验性能提升90%。
“Single-Precision Julia”(SPJ)是对于大型游戏运行的重要衡量参数,这个数据往往越小越好。“Double-Precision Mandel”(DPM)对流体力学,Matlab这类科学运算速度是重要衡量指标。i7-14700K在这俩指标上也都有相当的提升。
![](https://p0.ssl.img.360kuai.com/t0126d6b2f66ad30535.jpg)
既然是在科学计算上有提升,那我就直接扒拉出来我自己的LSTM的代码用纯CPU来跑了看看性能。
同样跑一个时间序列分析程序,在纯CPU跑的时候,i7-13700K跑完需要63秒,i7-14700K跑完需要30秒,而用同一块GPU跑的时候,i7-13700K跑完需要23秒,i7-14700K跑完需要15秒。作为一个小验证程序,i7-14700K的程序完成时间领先了大概50%的时间,意味着其实如果我写一个程序,之前需要跑五天的话,现在只需要跑不到三天就行。这样节省下来的时间才是最有用的。
![](https://p0.ssl.img.360kuai.com/t0198269f42439c91ce.jpg)
跑完这个小时间序列分析程序的对比,我再用同样配置跑一下冒泡排序算法的速度。源代码直接放出来。
同样跑一个冒泡排序程序,在相同的时间运行强度下(都跑5秒),i7-13700K单核可以跑完623个排序,i7-13700K多核可以跑完4634个排序;i7-14700K单核可以跑完1434个排序,i7-14700K多核可以跑完8413个排序。也就是说,相同平台下面,换个i7-14700K的处理器,完全可以节省接近50%的时间,进一步加快科学计算的验证。
![](https://p0.ssl.img.360kuai.com/t01eab6f308e20b1604.jpg)
总结一句话就是,i7-14700K相对于上一代的i7-13700K来说,提升幅度巨大,尤其是我比较关注的算力部分,无论是单精度计算还是双精度计算,i7-14700K都几乎超出了13代i9的性能。
关键是这个超强的性能还是在维持了125TDP的热功耗设计的前提下完成的,并且还给了更大的三级缓存,更多的核心数和线程数等等。
固态硬盘读写性能分析
为何单独列出来一条硬盘的分析?i7-14700K的性能提升不仅仅是主频的提升,更是可以更好地发挥固态硬盘的性能。
并且其实硬盘读写部分其实更考验主板的总线设计水平。
![](https://p0.ssl.img.360kuai.com/t012e01fd33043b7b79.jpg)
由于CPU速度非常快,且价格非常高,所以=我们必须得充分压榨CPU,得像生产队的驴一样,让它不停地工作。
当一个程序去I/O 设备读取数据, 由于I/O 设备数据存入读取速度,相比于CPU的执行速度来说度日如年,CPU这么牛逼这么昂贵的宝贝,怎么能让它歇着,得让它一直干活,去切换执行其他程序。也就是将CPU的时间进行分片,让各个程序在CPU上轮转执行。
所以CPU处理性能越强,对于存储设备的IO要求就越高,特别是现在的固态硬盘基本上都走PCIe协议,支持PCIe4.0协议的固态硬盘读写速率都能上7000MB/s了,虽然相对于内存条的80000MB/s读写来说少得可怜,但是总是比机械硬盘的200MB/s的读写速度更能发挥CPU的性能。
但是反过来,不够好的CPU在面临P7000Z这样的高性能固态硬盘的时候,必定会有的问题就是I/O性能不够导致跑不满固态硬盘。
爱国者的P7000Z应该是可以触及CPU性能的一款固态硬盘,PCIe4.0 x4通道,最大有4T的选项,不过我暂时没啥需求,就买了性价比更高的2T版本。2T版本的顺序读取速度为7450MB/s,顺序写入速度为6750MB/s,基本是跑满PCIe4.0 x4通道的性能。
![](https://p0.ssl.img.360kuai.com/t01383f30a57ac7d483.jpg)
直接上ATTO开测小文件到64MB大文件之间各个文件大小前提下的硬盘读写,4K读写能上700MB/s,当文件大于64KB的时候,顺序读写速率已经可以稳定在6GB/s左右了。
然后我顺手跑了一下同样主板电源配置下换i7-13700K的ATTO读写,可以看到在i7-13700K的支持下,爱国者P7000Z的写入速度其实一直维持在5.9GB/s,相对于i7-14700K的支持来说,弱了那么一丢丢。所以其实升级更好的CPU,即使是啥都不变,原来设备的性能也能得到更好的发挥。
![](https://p0.ssl.img.360kuai.com/t01090096242268dd9f.jpg)
而我对它做了个全盘读写,顺序读写速率也还是能维持在5GB/s以上。
![](https://p0.ssl.img.360kuai.com/t01519a8081a9572c85.jpg)
所以从我的角度来看,i7-14700K的升级点在与它给了充裕的PCIe通道,并且得益于 技嘉B760M 冰雕X 充裕的PCIe通道数的支持,让整个爱国者P7000Z的读写性能发挥到了极致。
结语
作为第一个普及内存上8000MHz的品牌,技嘉现在大部分主板产品线都能给到XMP3.0支持下的内存超8000MHz,尤其是最近新出的几款B760系列的主板都标配这个了。
如果你想搞个纯白色主题的装机方案,并且不想在性能方面有所妥协,我觉得 技嘉B760M 冰雕X 应该还算是个不错的选择。
阅读更多主板精彩内容,可前往什么值得买查看
","gnid":"92be692be6c8b85e0","img_data":[{"flag":2,"img":[{"desc":"","height":"403","title":"","url":"https://p0.ssl.img.360kuai.com/t01a47770b0210a0eb9.jpg","width":"604"},{"desc":"","height":"402","title":"","url":"https://p0.ssl.img.360kuai.com/t016f80442bd10b4823.jpg","width":"604"},{"desc":"","height":"735","title":"","url":"https://p0.ssl.img.360kuai.com/t01642284a15ffeaffc.jpg","width":"1080"},{"desc":"","height":"720","title":"","url":"https://p0.ssl.img.360kuai.com/t019cfffa514996d1dc.jpg","width":"1080"},{"desc":"","height":"725","title":"","url":"https://p0.ssl.img.360kuai.com/t01d221158bf7f7fcae.jpg","width":"1080"},{"desc":"","height":"777","title":"","url":"https://p0.ssl.img.360kuai.com/t017a5e500da9cdbeac.jpg","width":"1080"},{"desc":"","height":"715","title":"","url":"https://p0.ssl.img.360kuai.com/t0125deb0b61033b347.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01cc2c82e59d1c05c8.jpg","width":"1080"},{"desc":"","height":"540","title":"","url":"https://p0.ssl.img.360kuai.com/t01b57b95b196076504.jpg","width":"1080"},{"desc":"","height":"648","title":"","url":"https://p0.ssl.img.360kuai.com/t01f8a90634437d874a.jpg","width":"1080"},{"desc":"","height":"719","title":"","url":"https://p0.ssl.img.360kuai.com/t019c0ff1d8905e7912.jpg","width":"1080"},{"desc":"","height":"810","title":"","url":"https://p0.ssl.img.360kuai.com/t01feb523b3648485ca.jpg","width":"1080"},{"desc":"","height":"966","title":"","url":"https://p0.ssl.img.360kuai.com/t0102a615e71303ccaa.jpg","width":"1080"},{"desc":"","height":"399","title":"","url":"https://p0.ssl.img.360kuai.com/t01ca08e4c2995fb52b.jpg","width":"402"},{"desc":"","height":"391","title":"","url":"https://p0.ssl.img.360kuai.com/t01bb480ab727fd7f42.jpg","width":"1080"},{"desc":"","height":"772","title":"","url":"https://p0.ssl.img.360kuai.com/t01f3df7abd5c8a55ee.jpg","width":"1080"},{"desc":"","height":"1010","title":"","url":"https://p0.ssl.img.360kuai.com/t0126d6b2f66ad30535.jpg","width":"1080"},{"desc":"","height":"741","title":"","url":"https://p0.ssl.img.360kuai.com/t0198269f42439c91ce.jpg","width":"1080"},{"desc":"","height":"724","title":"","url":"https://p0.ssl.img.360kuai.com/t01eab6f308e20b1604.jpg","width":"1080"},{"desc":"","height":"774","title":"","url":"https://p0.ssl.img.360kuai.com/t012e01fd33043b7b79.jpg","width":"1080"},{"desc":"","height":"644","title":"","url":"https://p0.ssl.img.360kuai.com/t01383f30a57ac7d483.jpg","width":"1080"},{"desc":"","height":"733","title":"","url":"https://p0.ssl.img.360kuai.com/t01090096242268dd9f.jpg","width":"1080"},{"desc":"","height":"674","title":"","url":"https://p0.ssl.img.360kuai.com/t01519a8081a9572c85.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"pika","pub_time":1700740952000,"pure":"","rawurl":"http://zm.news.so.com/f391ec7442dad921cbd266c3cfc8a51d","redirect":0,"rptid":"f5b044c1d798cc94","rss_ext":[],"s":"t","src":"什么值得买","tag":[],"title":"技嘉B760M 冰雕X主板搭配14700K开箱
穆克震1276为什么从char*到double型转换的精度丢失解决方案 -
田清饰13482216413 ______ public BigDecimal(double val) 将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式.返回的 BigDecimal 的标度是使 (10scale * val) 为整数的最小值.注:此构造方法的结果有一定的不可预知性.有人可能认为...
穆克震1276java用double和float进行计算有时候精度不准确怎么办 -
田清饰13482216413 ______ 这个问题我知道!Java进行数学计算时有一个原则,就是double和float用来做科学计算,商业计算中最好使用java.math.BigDecimal,例如——doubleresult;doubled1=1.0;doubled2=1.0;BigDecimalbd1=newBigDecimal(Double.toString(d1));...
穆克震1276java中float类型造成的精度误差如何解决 -
田清饰13482216413 ______ float 类型 精度只有7位有效数字 double 类型 精度12-14位有效数字 s=k/j; 会引进有效数字的截断误差.double 型,输出格式用 %lf (Long Float -- lf)
穆克震1276vb中double类型的精度是最高的吗?如果还是不够怎么办? -
田清饰13482216413 ______ double类型的精度确实是可定义类型中最高的,但有效数字为15或16位 另一种Decimal 数据类型有效位可达到28或29位,但不含指数位 应该可以这样理解: Decimal精度更高但示数范围小;double反之 而且Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型 上面有高手给了你利用Decimal 数据类型解决例题的办法. 另外如果需要,还可以自己定义变量或数组来记录超大数,有效位和示数范围上不封顶,不过进位借位等等操作只有自己解决了
穆克震1276Java的Double的判断和显示问题 -
田清饰13482216413 ______ double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 保留两位小数 --------------------------------------------------------------- java.text.DecimalFormat df =new java.text....
穆克震1276matlab 数据最高精度是哪种 -
田清饰13482216413 ______ 双精度 double
穆克震1276vb中double类型的精度如果还是不够怎样办?
田清饰13482216413 ______ 那样的话,只能自己编写大数运算的方法1般通过数组实现,你可以网上找下这方面的资料不过,VB的相对少些
穆克震1276c# 判断语句,double 精度问题 -
田清饰13482216413 ______ 我在.NET4下测试,如果是输出bb-aa和cc都是0.02,就是在if比较时候就有问题了...扩大10n倍数,我认为不是什么明智之举.我认为可以ToString比较,可以将一个double直接变成一个字符串 如: double x=3.14159000 // 3.14159,而不是3.14159000
穆克震1276精度要求较高的小数计算如何实现
田清饰13482216413 ______ 报表为了加快运算速度,会把直接敲入表达式的小数缺省当成双精度( double )类型处理,此时数据往往存在误差.比如: (5588.4 + 288.4)* 0.7 这样的写法,因为表达式里的三个数值 5588.4 、 288.4 、0.7 缺省变成了double ,用 double ...
穆克震1276double 转换long 丢失精度
田清饰13482216413 ______ 这是一个典型的精度丢失的问题,很常见,一个效率不高的有效办法,是先将double转成string,然后再转成long,做一个中转. 或者也可以自己去处理 IEEE 浮点数格式来转化. double d = 2.01; long f; char buff[32]; sprintf( buff, "%.0f", d * 100.0 ); sscanf( buff, "%d", &f ); printf( "%d", f );