真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net浮點(diǎn)數(shù) vb浮點(diǎn)除法怎么算

VB.NET 怎么讀寫(xiě)二進(jìn)制文件,類(lèi)似Open

本示例闡釋二進(jìn)制文件的基本輸入和輸出(使用 BinaryReader、BinaryWriter 和 FileStream 類(lèi)。 在如何創(chuàng)建日志文件標(biāo)題下面有一個(gè)類(lèi)似的主題。讀寫(xiě)二進(jìn)制信息使您可以創(chuàng)建和使用通過(guò)其他輸入和輸出方法無(wú)法訪問(wèn)的文件。本示例還展示寫(xiě)入非字符串?dāng)?shù)據(jù),并展示二進(jìn)制 I/O 的功能。

創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),臨夏網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:臨夏等地區(qū)。臨夏做網(wǎng)站價(jià)格咨詢(xún):13518219792

盡管計(jì)算機(jī)上的文件可以不同的類(lèi)型和文件存儲(chǔ),但是,二進(jìn)制格式是文件的較常用格式之一。此處對(duì)創(chuàng)建二進(jìn)制文件的簡(jiǎn)短介紹使用基類(lèi) BinaryReader 和 BinaryWriter 從文件獲取信息,并將信息放入文件。這些類(lèi)中的每個(gè)類(lèi)均封裝一個(gè)信息流,因此,在進(jìn)一步操作之前,需要?jiǎng)?chuàng)建一個(gè)可用于來(lái)回寫(xiě)信息的流。因?yàn)橐獎(jiǎng)?chuàng)建文件,所以可使用 FileStream 來(lái)公開(kāi)特定文件,在此情況下,如果該文件已存在,則可以修改該文件,或者如果該文件尚不存在,則可以創(chuàng)建該文件。在有 FileStream 之后,可以使用它來(lái)構(gòu)造 BinaryReader 和 BinaryWriter

在讀入信息之后,可以對(duì)信息進(jìn)行所需的任何操作。但是,在某些時(shí)候,您可能想要將信息寫(xiě)回文件,因此需要 BinaryWriter。在本示例中,您將使用 Seek 方法將信息追加到文件結(jié)尾,因此,在開(kāi)始寫(xiě)入之前,請(qǐng)確保指向文件的指針位于文件結(jié)尾。在使用 BinaryWriter 寫(xiě)入信息時(shí)有多個(gè)選項(xiàng)。因?yàn)?Write 方法有足夠的重載用于您能夠?qū)懭氲乃行畔㈩?lèi)型,所以,可以使用 Write 方法向您的編寫(xiě)器封裝的流寫(xiě)入任何標(biāo)準(zhǔn)形式的信息。本情況下,還可以使用 WriteString 方法向流中寫(xiě)入長(zhǎng)度預(yù)先固定的字符串。

VB Source: VB\ReadWrite.aspx

%@ Import Namespace="System.Text" %

%@ Import Namespace="System.IO" %

script language="VB" runat=server

Class TestBinary

Public Shared Function ReadFile(selection As String) As String

Dim output As StringBuilder = New StringBuilder()

Dim fs As FileStream = New FileStream("data.bin", FileMode.OpenOrCreate)

Dim r As BinaryReader = New BinaryReader(fs)

Try

r.BaseStream.Seek(0,SeekOrigin.Begin) ' 將文件指針設(shè)置到文件開(kāi)始

' 因?yàn)椴煌瑪?shù)據(jù)類(lèi)型之間的很多轉(zhuǎn)換結(jié)果都是不可解釋的,

' 所以當(dāng)在其他類(lèi)型與二進(jìn)制數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換時(shí),

' 必須捕捉可能引發(fā)的任何潛在的異常...

' 能夠正確讀取數(shù)據(jù)依賴(lài)于如何寫(xiě)入信息...

' 這與寫(xiě)日志文件時(shí)不同。

Do While r.BaseStream.Position r.BaseStream.Length ' 當(dāng)未到達(dá)文件結(jié)尾時(shí)

Select Case selection

Case "Boolean"

output.Append( r.ReadBoolean().ToString() )

Case "String"

output.Append( r.ReadString() )

Case "Integer"

output.Append( r.ReadInt32().ToString() )

End Select

Loop

Finally

fs.Close()

End Try

return output.ToString()

End Function

Public Shared Function WriteFile(output As Object, selection As String) As String

Dim fs As FileStream = New FileStream("data.bin", FileMode.Create)

Dim w As BinaryWriter = New BinaryWriter(fs)

Dim strOutput As String = ""

w.BaseStream.Seek(0, SeekOrigin.End) ' 將文件指針設(shè)置到文件結(jié)尾

' 因?yàn)檎趯?xiě)的信息可能不適合于所選擇用于寫(xiě)入的特定樣式

' (例如,單詞“Hello”作為整數(shù)?),所以我們必須捕捉寫(xiě)入

' 錯(cuò)誤,并通知用戶(hù)未能執(zhí)行該任務(wù)

Try

Select Case selection

Case "Boolean"

Dim b As Boolean = Convert.ToBoolean(output)

w.Write( b )

Case "String"

Dim s As String = Convert.ToString(output)

w.Write( s )

Case "Integer"

Dim i As Int32 = Convert.ToInt32(output)

w.Write(i)

End Select

Catch E As Exception

' 讓用戶(hù)知道未能寫(xiě)入該信息

strOutput = "寫(xiě)異常:" chr(13) _

"無(wú)法以所請(qǐng)求的格式寫(xiě)入要寫(xiě)入的信息。" _

chr(13) "請(qǐng)輸入嘗試寫(xiě)入的數(shù)據(jù)類(lèi)型的有效值"

End Try

fs.Close()

return strOutput

End Function

End Class

Sub btnAction_Click(src As Object, E As EventArgs)

Dim s As String = ""

' 寫(xiě)出文件

s = TestBinary.WriteFile(txtInput.Text, lstDataIn.SelectedItem.Text)

If s = "" Then

Try

' 讀回信息,顯示信息...

txtOutput.Text = TestBinary.ReadFile(lstDataIn.SelectedItem.Text)

Catch Exc As Exception

' 讓用戶(hù)知道未能寫(xiě)入信息

s = "讀異常:" chr(13) _

"無(wú)法以所請(qǐng)求的格式讀取要寫(xiě)入的信息。" _

chr(13) "請(qǐng)輸入嘗試寫(xiě)入的數(shù)據(jù)類(lèi)型的有效值"

End Try

Else

txtOutput.Text = s

End If

End Sub

/script

html

head

link rel="stylesheet" href="intro.css"

/head

body style="background-color:f6e4c6"

form method=post runat="server"

p

table

tr

tdb

下面的示例使用 BinaryWriter 對(duì)象創(chuàng)建一個(gè)二進(jìn)制文件,然后使用 BinaryReader 讀取該信息。/b可以選擇不同的對(duì)象來(lái)將所需的信息寫(xiě)入文件

此演示用于強(qiáng)調(diào)您需要知道如何讀取已寫(xiě)入的二進(jìn)制文件。一旦以某種格式寫(xiě)入數(shù)據(jù),就只能以該格式讀取該信息。但是,可以將多種不同的數(shù)據(jù)類(lèi)型寫(xiě)入文件。在此演示中,輸入任意字符串并將它們作為字符串讀取,對(duì)于整型,僅輸入整型數(shù)值項(xiàng)(試試浮點(diǎn)數(shù)字,然后看看會(huì)發(fā)生什么...);對(duì)于布爾型項(xiàng),僅輸入詞“false”和“true”。

p

hr

/td

/tr

/table

asp:Table id="basetable" runat="server" border="0" cellspacing="0" cellpadding="5"

asp:tablerow

asp:tablecell verticalalign="top"

請(qǐng)選擇要保存到二進(jìn)制文件的數(shù)據(jù)類(lèi)型...

/asp:tablecell

asp:tablecell verticalalign="top"

asp:listbox id="lstDataIn" runat="server"

asp:listitemBoolean/asp:listitem

asp:listitem selected="true"String/asp:listitem

asp:listitemInteger/asp:listitem

/asp:listbox

/asp:tablecell

asp:tablecell verticalalign="top"

asp:button id="btnAction" onclick="btnAction_Click" Text="寫(xiě)入/讀取文件" runat="server"/

/asp:tablecell

/asp:tablerow

vb如何將浮點(diǎn)數(shù)的十六進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)據(jù)

使用API函數(shù)CopyMemory來(lái)轉(zhuǎn)換。

Option?Explicit

Private?Declare?Sub?CopyMemory?Lib?"kernel32"?Alias?"RtlMoveMemory"?(Destination?As?Any,?Source?As?Any,?ByVal?Length?As?Long)

Private?Sub?Command1_Click()

Dim?BB(0?To?3)?As?Byte

Dim?se?As?Single

BB(0)?=?H0

BB(1)?=?H80

BB(2)?=?H71

BB(3)?=?H43

CopyMemory?se,?ByVal?VarPtr(BB(0)),?4

Text1.Text?=?se

End?Sub

具體參考:

vb.net single 類(lèi)型的變量 如何判斷等于零

浮點(diǎn)數(shù)運(yùn)算會(huì)產(chǎn)生誤差,所以有時(shí)候(比如執(zhí)行了乘除運(yùn)算后)按理應(yīng)該是0的浮點(diǎn)數(shù)變量可能并不是完全為0,會(huì)有個(gè)小誤差。

所以盡可能使用整數(shù)變量來(lái)進(jìn)行運(yùn)算,非得有小數(shù)的,也盡量轉(zhuǎn)為整數(shù)來(lái)運(yùn)算,比如 1.23 可以擴(kuò)大100倍變?yōu)?23,運(yùn)算完畢再除以100后進(jìn)行輸出。這樣就可以最大限度減少浮點(diǎn)運(yùn)算誤差,而且整數(shù)運(yùn)算的速度也比浮點(diǎn)運(yùn)算快好多倍。

VB.net round問(wèn)題

這應(yīng)該是由浮點(diǎn)數(shù)的誤差所造成的,你把kk設(shè)為雙精度浮點(diǎn)數(shù),那么結(jié)果就是1.34

但是浮點(diǎn)數(shù)誤差與精度是無(wú)關(guān)的,雙精度也同樣存在,繼續(xù)測(cè)試你就會(huì)發(fā)現(xiàn)有趣的現(xiàn)象:

下面假定s為單精度浮點(diǎn)數(shù)變量,d為雙精度浮點(diǎn)數(shù)變量,則:

s = 1.345 Round(s, 2) = 1.35 (錯(cuò))

d = 1.345 Round(d, 2) = 1.34 (對(duì))

s = 2.345 Round(s, 2) = 2.35 (錯(cuò))

d = 2.345 Round(d, 2) = 2.35 (錯(cuò))

s = 3.345 Round(s, 2) = 3.35 (錯(cuò))

d = 3.345 Round(d, 2) = 3.34 (對(duì))

s = 4.345 Round(s, 2) = 4.34 (對(duì))

d = 4.345 Round(d, 2) = 4.34 (對(duì))

可以發(fā)現(xiàn)這錯(cuò)誤的發(fā)生是毫無(wú)規(guī)律的,有時(shí)候真能讓人發(fā)瘋!


網(wǎng)站欄目:vb.net浮點(diǎn)數(shù) vb浮點(diǎn)除法怎么算
標(biāo)題URL:http://weahome.cn/article/dospdph.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部