2010年3月12日 #
怎么樣判斷兩個(gè)浮點(diǎn)數(shù)精確相等?一般來(lái)說(shuō)是兩個(gè)數(shù)差的絕對(duì)值和一個(gè)極小值比較,如果小于這個(gè)極小就,就認(rèn)為是相等。
前兩天在LinuxSir上看到一個(gè)貼子,討論這個(gè)問(wèn)題,發(fā)現(xiàn)可以精確比較相等。
代碼如下:
發(fā)現(xiàn)用這種方法在Ubuntu8.04,GCC4.24的情況下通過(guò)。不過(guò)這種方法個(gè)人感覺(jué)只能用來(lái)比較一個(gè)程序內(nèi)部生成的浮點(diǎn)數(shù)的運(yùn)算。
如果兩個(gè)浮點(diǎn)數(shù)是由兩臺(tái)不同平臺(tái)的機(jī)器運(yùn)行的程序生成,或者不同編譯器生成的程序運(yùn)行產(chǎn)生,則可能根據(jù)無(wú)法得到相等的結(jié)果。
因現(xiàn)在只有x86的機(jī)器,誰(shuí)手上有ARM平臺(tái)之類(lèi)的,請(qǐng)幫忙測(cè)試一下。謝謝
當(dāng)直接用==比較兩個(gè)浮點(diǎn)數(shù)時(shí),隨著整數(shù)部分增加,精度急劇下降
當(dāng)比較0.000...001和0.000.。0011時(shí),到65個(gè)零都沒(méi)有問(wèn)題,能得到正確結(jié)果 當(dāng)比較1.000..001和0.000.00011時(shí),小數(shù)點(diǎn)后14個(gè)零時(shí),就不能得到正確結(jié)果。
2008年11月24日 #
2007年8月24日 #
環(huán)境:mingw5.1.3 + msys1.0.10+ msysDTK-1.0.1
這些軟件都可以從mingw的官方網(wǎng)站上下載。
從mingw官方網(wǎng)站上下載gdb-6.6-mingw-src.tar.bz2和mingw-gdb.6.6.patch.tar.bz2
進(jìn)入msys.
解壓縮兩個(gè)包
Cd gdb-6.6-mngw
patch –Np1 –I ../mingw-gdb-path.
./configure –target=arm-linux –prefix=/usr/local/arm-gdb
make
make install
官方網(wǎng)站上提供的gdb-5.2.1-1的源代碼包,我沒(méi)有編譯成功,不知道有人編譯成功了嗎?
Gdbserver編譯:
cd gdb/gdbserver
網(wǎng)上一般教程都是:
./configure –target=arm-linux –host=arm-linux
Make CC=arm-linux-gcc(交叉編譯工具)
但在某些交叉編譯工具可能會(huì)不行。如我用的就是,花了大半天時(shí)間才找到方法。方法如下:
假設(shè)交叉編譯工具名字叫arm-linux-gnueabi-gcc.
先執(zhí)行:arm-linux-gnueabi-gcc -v
找到一行,指出target的。假設(shè)是arm-linux-gnueabi.
./configure –target=arm-linux-gnueabi –host=arm-linux-gnueabi CC=arm-linux-gnueabi-gcc
才能編譯成功
Powered by: C++博客 Copyright © 絕對(duì)零度