Javascript String -> Float

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Argon
Elite Poster
Elite Poster
Berichten: 1265
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Hallo,

Vooreerst: ik ben geen programmeur maar gewoon iemand die iets in elkaar aan het flansen is :-)

Ik heb een TXT met volgende inhoud:

Code: Selecteer alles

26/09/2019 22:43-1.7795640419603396-14438.70640213025-2.090501603352704-16961.577429026634
in bovenstaande TXT gebruik ik een Delimiter -

Ik lees via FS de TXT in en aan de hand van de Split functie verkrijg ik volgende content:

Code: Selecteer alles

        fs.readFile('content.txt', 'utf8', function (err, contents) {       
            var words = contents.split('-');
            console.log(words[0]);
            console.log(words[1]);
            console.log(words[2]);
            console.log(words[3]);
            console.log(words[4]);
De console.log heeft mij dan volgende resultaten terug:

Code: Selecteer alles

26/09/2019 22:43
1.7795640419603396
14438.70640213025
2.090501603352704
16961.577429026634
Bovenstaande resultaten zijn dus nog altijd een String, maar ik had die graag omgezet naar een floating point (met 4 decimalen). De reden hiervoor is is dat ik words[1] wil optellen met words [3] alsook words[2] met words[4].

Ik heb al verschillende pogingen ondernomen, maar ik krijg het niet in orde. Via parseFloat krijg ik blijkbaar een String terug waardoor het niet mogelijk is om de som te maken van beide variabelen.

Ik wil dus het volgende bekomen:

Code: Selecteer alles

var totaal = words[1] + words[2]
met als resultaat: 3.8701
en NIET: 1.77956404196033962.090501603352704

Iemand die mij op weg kan helpen?

Bedankt!
Gebruikersavatar
JamesEarlGray
Elite Poster
Elite Poster
Berichten: 1322
Lid geworden op: 24 aug 2017, 13:04
Uitgedeelde bedankjes: 77 keer
Bedankt: 135 keer

https://duckduckgo.com/?q=javascript+st ... fab&ia=web

tweede link: https://stackoverflow.com/questions/642 ... javascript

tweede gesuggereerde oplossing: gebruik +() ipv parseFloat() omdat parseFloat ook ongeldige getallen zal parsen naar een float ipv een fout te geven, wat bugs kan veroorzaken.

Dus zo:

var totaal = +(words[1]) + +(words[2])
Argon
Elite Poster
Elite Poster
Berichten: 1265
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Hmm, op Windows werkt dit inderdaad perfect.

Ik verplaats nu het script naar mijn Linux machine en daar faalt het plots :-(

Code: Selecteer alles

        fs.readFile('content.txt', 'utf8', function (err, contents) {
            //console.log(contents)
        
            var words = contents.split('-');
            //console.log(words[0]);
            //console.log(words[1]);
            //console.log(words[2]);
            //console.log(words[3]);
            //console.log(words[4]);

            var totaal1 = +(words[1]) + +(words[3])
            var totaal2 = +(words[2]) + +(words[4])


            console.log(totaal1)
            console.log(totaal2)
Output:

Code: Selecteer alles

NaN
NaN
Gebruikersavatar
JamesEarlGray
Elite Poster
Elite Poster
Berichten: 1322
Lid geworden op: 24 aug 2017, 13:04
Uitgedeelde bedankjes: 77 keer
Bedankt: 135 keer

Wordt het bestand nog steeds correct ingelezen in de words array?
Argon
Elite Poster
Elite Poster
Berichten: 1265
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

:oops: Permission error op het TXT bestand.
Alles werkt nu zoals het hoort. Bedankt ! ;-)
Plaats reactie

Terug naar “Development”