Avatar billede saudoo Nybegynder
16. september 2007 - 22:35 Der er 8 kommentarer og
2 løsninger

Asp.Net runder tal af

Hej eksperter...

Jeg har et lille problem. Jeg er ikke sikker på om hvorvidt det er mig der laver noget forkert, eller om det er et indstillingsspørgsmål.

Problemet ligger i når jeg f.eks. gør dette:

Dim intTest as Integer
intTest = 1.92

Så bliver intTest automatisk 2. Hvis jeg sætter intTest til 0.5 bliver den 0.

Hvorfor gør den det? Og ikke mindst kan jeg undgå det?

Tak..
Avatar billede dr_chaos Nybegynder
16. september 2007 - 22:38 #1
Brug double i stedet for. en int kan kun vise hel tal.
tal på >=0,5 bliver rundet op ellers rundes ned til nærmeste hel tal.

Dim intTest as double
intTest = 1.92
Avatar billede erikjacobsen Ekspert
16. september 2007 - 22:38 #2
Dim intTest as Double

Men kør altid med
  option explicit on
  option strict on

Det hjælper ;)
Avatar billede nielle Nybegynder
16. september 2007 - 22:38 #3
Integer er til heltal.

Brug Float eller Double for kommatal.
Avatar billede saudoo Nybegynder
16. september 2007 - 22:59 #4
Heh.. nåja det er da rigtig nok.. :P

I skal have mange tak for hjælpen.. Ligger I ikke alle tre et svar?
Avatar billede arne_v Ekspert
16. september 2007 - 23:01 #5
Bortset fra at diverse betragtninger om korrekt type og advarsel mod implicitte
konveteringer, så er det værd at bemærke at den specifikke afrunding skyldes
at den afrunding der laves ved implicit konvertering bruger bankers rounding d.v.s.
at den runder .5 af mod lige tal.
Avatar billede arne_v Ekspert
16. september 2007 - 23:02 #6
saudoo prøv evt. at køre denne her side:

<%@ import namespace="System.Data" %>
<html>
<head>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
    Dim dt As DataTable = New DataTable()
    dt.Columns.Add(New DataColumn("x", GetType(Double)))
    dt.Columns.Add(New DataColumn("Floor", GetType(Integer)))
    dt.Columns.Add(New DataColumn("Ceiling", GetType(Integer)))
    dt.Columns.Add(New DataColumn("CType", GetType(Integer)))
    dt.Columns.Add(New DataColumn("Assignment", GetType(Integer)))
    dt.Columns.Add(New DataColumn("Special", GetType(Integer)))
    Dim i As Integer
    Dim x as Double
    Dim j As Integer
    For i = 0 To 9
        x = i + 0.25
        j = x
        dt.Rows.Add(New Object() { x, Math.Floor(x), Math.Ceiling(x), CType(x, Integer), j, Math.Floor(x+0.5) })
        x = i + 0.5
        j = x
        dt.Rows.Add(New Object() { x, Math.Floor(x), Math.Ceiling(x), CType(x, Integer), j, Math.Floor(x+0.5) })
        x = i + 0.75
        j = x
        dt.Rows.Add(New Object() { x, Math.Floor(x), Math.Ceiling(x), CType(x, Integer), j, Math.Floor(x+0.5) })
    Next
    MyDataList.DataSource = dt.DefaultView
    MyDataList.DataBind()
End Sub
</script>
</head>
<body>
<form runat=server>
    <table border>
        <tr>
        <th>x</th>
        <th>Math.Floor(x)</th>
        <th>Math.Ceiling(x)</th>
        <th>CType(x,Integer)</th>
        <th>Integer=</th>
        <th>Math.Floor(x+0.5)</th>
        </tr>
        <asp:Repeater id="MyDataList" runat="server">
            <ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem,"x") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"Floor") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"Ceiling") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"CType") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"Assignment") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"Special") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
</form>
</body>
</html>
Avatar billede dr_chaos Nybegynder
16. september 2007 - 23:15 #7
svar :)
Avatar billede nielle Nybegynder
17. september 2007 - 06:52 #8
Springer over på denne :^)
Avatar billede saudoo Nybegynder
17. september 2007 - 13:54 #9
Arh... fikst, tak for dokumentet arne_v.. kan du ikke også smide et svar?
Avatar billede arne_v Ekspert
18. september 2007 - 00:45 #10
gerne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester