376.77000E+00
376.77000E+00
Hallo,
Via de computer "praat" ik met een elektrisch apparaat (programmeren). Dit apparaat geeft op het scherm afstanden weer zoals 1.00268 km (met een precisie van 5 decimalen). Als ik via het programma echter aan het apparaat om de afstand vraag, dan ontvang ik het volgende:
Ontvang: 376.77000E+00
Verwacht: 0.37677 km (376 meter en 77 centimeter)
Ontvang: 1.0026800E+03
Verwacht: 1.00268 km (1 kilometer, 2 meter en 68 centimeter)
Hoewel ik het getal dat ik verwacht herken in wat ik ontvang, begrijp ik de logica niet om dit "terug te keren" naar wat ik verwacht.
Herkent iemand deze notatie? Zo ja, heeft iemand een idee hoe je dit met een berekening weer kunt omzetten in "normaal" leesbare afstanden? Bij voorbaat dank voor uw hulp.
Via de computer "praat" ik met een elektrisch apparaat (programmeren). Dit apparaat geeft op het scherm afstanden weer zoals 1.00268 km (met een precisie van 5 decimalen). Als ik via het programma echter aan het apparaat om de afstand vraag, dan ontvang ik het volgende:
Ontvang: 376.77000E+00
Verwacht: 0.37677 km (376 meter en 77 centimeter)
Ontvang: 1.0026800E+03
Verwacht: 1.00268 km (1 kilometer, 2 meter en 68 centimeter)
Hoewel ik het getal dat ik verwacht herken in wat ik ontvang, begrijp ik de logica niet om dit "terug te keren" naar wat ik verwacht.
Herkent iemand deze notatie? Zo ja, heeft iemand een idee hoe je dit met een berekening weer kunt omzetten in "normaal" leesbare afstanden? Bij voorbaat dank voor uw hulp.
Re: 376.77000E+00
De ontvangst is het getal in meters.
De E betekent 10-tot-de-macht:
376.77000E+00 = 376.77000 * 10^0 = 376.77000 * 1 = 376.77000 meter
1.0026800E+03 = 1.0026800 * 10^3 = 1.0026800 * 1000 meter = 1.0026800 km = 1002.6800 meter
De exponenten van 10 zijn wsch veelvouden van 3 om de omrekening naar kilo, mega, .... en milli, micro...
eenvoudiger te maken.
Kom je hiermee verder?
De E betekent 10-tot-de-macht:
376.77000E+00 = 376.77000 * 10^0 = 376.77000 * 1 = 376.77000 meter
1.0026800E+03 = 1.0026800 * 10^3 = 1.0026800 * 1000 meter = 1.0026800 km = 1002.6800 meter
De exponenten van 10 zijn wsch veelvouden van 3 om de omrekening naar kilo, mega, .... en milli, micro...
eenvoudiger te maken.
Kom je hiermee verder?
Re: 376.77000E+00
Hallo Arie, dank voor uw bericht!
Er begint wat te dagen nu inderdaad.
E+00 = 1
E+01 = 10
E+02 = 100
E+03 = 1000
Etc..
Logaritme komt dan in me op. Wiskundig ben ik niet erg sterk
Dit getal (376.77000), vermenigvuldigd met het logaritmische staartje (E+00 = maal 1), geeft altijd het resultaat in meters. Begrijp ik dat goed?
Er begint wat te dagen nu inderdaad.
E+00 = 1
E+01 = 10
E+02 = 100
E+03 = 1000
Etc..
Logaritme komt dan in me op. Wiskundig ben ik niet erg sterk
Dit getal (376.77000), vermenigvuldigd met het logaritmische staartje (E+00 = maal 1), geeft altijd het resultaat in meters. Begrijp ik dat goed?
Re: 376.77000E+00
Klopt.YoM333 schreef:Er begint wat te dagen nu inderdaad.
E+00 = 1
E+01 = 10
E+02 = 100
E+03 = 1000
Etc..
In aanvulling hierop:
E+00 = 1
E-01 = 0.1
E-02 = 0.01
E-03 = 0.001
Dus 2.15 E-03 = 2.15 * 10^(-3) = 2.15 mm = 0.00215 m
Het resultaat is in deze notatie inderdaad altijd in meters.
Voor de volledigheid:
Je log-waarde heeft alleen betrekking op de hele macht van 10:
log(100) = 2
log(1000) = 3
etc.
maar NIET op het getal tussen nul en 10 dat ervoor staat:
2 E+02 = 2 * 100 = 200
maar
log(200) = 2.3010299....
Het staartje is dus de exponent van 10.
Re: 376.77000E+00
Het is me duidelijk. Bedankt voor uw hulp Arie. Ik ga er mee aan de slag
-
- Vergevorderde
- Berichten: 1144
- Lid geworden op: 21 jan 2006, 15:09
- Locatie: Krimpen aan den IJssel
Re: 376.77000E+00
Ik weet niet in welke taal je programmeert, maar als je in een C achtige taal programmeert, kan je zo'n getal inlezen met
- sscanf (tekst, "%e", &getal)
- getal = strtod (tekst, (char **)NULL);
- getal = atof (tekst)
jou programmeertaal zal ook wel soortgelijke functies hebben.
- sscanf (tekst, "%e", &getal)
- getal = strtod (tekst, (char **)NULL);
- getal = atof (tekst)
jou programmeertaal zal ook wel soortgelijke functies hebben.
``Life is complex. It has real and imaginary parts.''
- meneer van Hoesel
- Vergevorderde
- Berichten: 395
- Lid geworden op: 20 apr 2010, 14:43
- Locatie: Zwolle
Re: 376.77000E+00
ik kan mij nog herinneren dat mijn oude TI−59 (maar ook de kleinere broertjes er van en de huidige grafische machines) twee vormen van notatie had, [Eng] en [EE], waarbij de eerste notatie wijze gebruikt werd voor technische weergave, machten van tien, waarbij die machten een veelvoud van 3 zijn... voor Mega, kilo, mili en zo voort
Re: 376.77000E+00
@Sjoerd: Helaas is het geen C-taal, het is Visual Basic .NET
Ik heb de volgende functie geprogrammeerd om mijn situatie op te lossen:
(De invoer, het exponent dat ik van de machine ontvang, is altijd in meter. Heb echter ook decibel geïntegreerd voor persoonlijke doeleinde)
Enkele voorbeelden met deze functie zijn:
Code: Exponent("376.77000E+00")
Resultaat: 376,77000 m
Code: Exponent("376.77000E+00",false,5,"km")
Resultaat: 0,37677 km
Code: Exponent("1760E-09",false,0)
Resultaat: 1760 nm
Code: Exponent("1.0026800E+03")
Resultaat: 1,00268 km
Code: Exponent("7.8410000E+00",true,3)
Resultaat: 7,841 dB
Ik heb de volgende functie geprogrammeerd om mijn situatie op te lossen:
(De invoer, het exponent dat ik van de machine ontvang, is altijd in meter. Heb echter ook decibel geïntegreerd voor persoonlijke doeleinde)
Code: Selecteer alles
Public Function Exponent(ByVal Exp As String, _
Optional ByVal decibel As Boolean = False, _
Optional ByVal decimalen As Integer = 5, _
Optional ByVal uitkomstEenheid As String = "") As String
Dim suffix As String = ""
Exp = Exp.Replace(".", ",") 'Vertaling Engels -> Europees
Dim dec As Decimal = Decimal.Parse(Exp, Globalization.NumberStyles.Any)
Dim staartje As String = Exp.Split("E")(1)
'Praten we over decibel? Sla dit over..
If decibel = False Then
If uitkomstEenheid = "" Then
' Converteer naar lengte-eenheid op basis van exponent,
' er is geen uitkomsteenheid gespecificeerd:
Select Case staartje
Case "-12" 'Picometer
suffix = "pm"
dec = dec * 1000000000000
Case "-09" 'Nanometer
suffix = "nm"
dec = dec * 1000000000
Case "-06" 'Micrometer
suffix = "um"
dec = dec * 1000000
Case "-03" 'Millimeter
suffix = "mm"
dec = dec * 1000
Case "-02" 'Centimeter
suffix = "cm"
dec = dec * 100
Case "-01" 'Decimeter
suffix = "dm"
dec = dec * 10
Case "+00" 'Meter
suffix = "m"
'Invoer is in meter; niets doen.
Case "+01" 'Decameter
suffix = "dam"
dec = dec / 10
Case "+02" 'Hectometer
suffix = "hm"
dec = dec / 100
Case "+03" 'Kilometer
suffix = "km"
dec = dec / 1000
Case "+06" 'Megameter
suffix = "Mm"
dec = dec / 1000000
Case "+09" 'Gigameter
suffix = "gm"
dec = dec / 1000000000
Case "+12" 'Terameter
suffix = "tm"
End Select
Else
'Er is een uitkomsteenheid gespecificeerd,
'converteer naar de gekozen lengte-eenheid:
Select Case uitkomstEenheid
Case "pm" 'Picometer
dec = dec * 1000000000000
Case "nm" 'Nanometer
dec = dec * 1000000000
Case "um" 'Micrometer
dec = dec * 1000000
Case "mm" 'Millimeter
dec = dec * 1000
Case "cm" 'Centimeter
dec = dec * 100
Case "dm" 'Decimeter
dec = dec * 10
Case "m" 'Meter
'Invoer is in meter; niets doen.
Case "dam" 'Decameter
dec = dec / 10
Case "hm" 'Hectometer
dec = dec / 100
Case "km" 'Kilometer
dec = dec / 1000
Case "Mm" 'Megameter
dec = dec / 100000
Case "gm" 'Gigameter
dec = dec / 1000000000
Case "tm" 'Terameter
dec = dec / 1000000000000
End Select
End If
Else
suffix = "dB"
End If
Dim formaat As String = "0."
For i = 0 To decimalen - 1
formaat = formaat & "0"
Next
If Not uitkomstEenheid = "" Then
Return Format(dec, formaat) & " " & uitkomstEenheid
Else
Return Format(dec, formaat) & " " & suffix
End If
End Function
Code: Exponent("376.77000E+00")
Resultaat: 376,77000 m
Code: Exponent("376.77000E+00",false,5,"km")
Resultaat: 0,37677 km
Code: Exponent("1760E-09",false,0)
Resultaat: 1760 nm
Code: Exponent("1.0026800E+03")
Resultaat: 1,00268 km
Code: Exponent("7.8410000E+00",true,3)
Resultaat: 7,841 dB
-
- Vergevorderde
- Berichten: 1144
- Lid geworden op: 21 jan 2006, 15:09
- Locatie: Krimpen aan den IJssel
Re: 376.77000E+00
Ik kan er dus van uitgaan dat
Convert.ToDouble(...)
niet aan je eisen voldoet?
Convert.ToDouble(...)
niet aan je eisen voldoet?
``Life is complex. It has real and imaginary parts.''
Re: 376.77000E+00
@Sjoerd:
.toDouble doet inderdaad wat ik oorspronkelijk vroeg. Echter zie je aan bovenstaande code dat het veel meer doet dan .toDouble door uitvoer van de juiste eenheid te voorzien, en zelfs eenheidsconversies toe te passen indien gewenst. Dat is echter in mijn specifieke geval gewenst. Wellicht dat iemand anders met .toDouble gered is.
PS: met .toDouble moet je ook de punt eerst door een komma vervangen, op Europese computers. Anders krijg je iets onverwachts terug. Voorbeeld is:
dim invoer as string = "376.77000E+00"
msgbox(convert.toDouble(invoer.replace(".",",")))
.toDouble doet inderdaad wat ik oorspronkelijk vroeg. Echter zie je aan bovenstaande code dat het veel meer doet dan .toDouble door uitvoer van de juiste eenheid te voorzien, en zelfs eenheidsconversies toe te passen indien gewenst. Dat is echter in mijn specifieke geval gewenst. Wellicht dat iemand anders met .toDouble gered is.
PS: met .toDouble moet je ook de punt eerst door een komma vervangen, op Europese computers. Anders krijg je iets onverwachts terug. Voorbeeld is:
dim invoer as string = "376.77000E+00"
msgbox(convert.toDouble(invoer.replace(".",",")))