Raspberry pi, Mongodb - Doubles

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
Ik heb hier een raspberry pi (Raspbian) met Mongodb compiled from source 2.1.1

Helaas worden mijn sensorwaardes die een decimale punt bevatten nogal vreemd weggegeschreven.

Als ik dit in de node shell invul krijg ik het volgende:
code:
1
2
3
4
5
> db.readings.insert({"henk":12.12})
> db.readings.insert({"henk":2})
> db.readings.find()
{ "_id" : ObjectId("52ee6fceed3f1b81a8bc79d8"), "henk" : -0.04952955075360699e-134 }
{ "_id" : ObjectId("52ee7007ed3f1b81a8bc79d9"), "henk" : 2 }


Dit alles werkt as expected op mijn ubuntu installatie (daar krijg ik dus netjes 12.12 te zien). Iemand een idee waar dit vandaan komt, en belangrijker.. hoe kan ik die waardes er goed in krijgen?

No worries m8


Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:45

Dogooder

dus...

Als het op ubuntu wel werkt, zou ik zeggen dat datatypes als gebruikt in de code niet helemaal netjes zijn. De hoeveelheid bit gebruikt voor een float verschilt dan per platform. Maar ik ken dit fenomeen alleen van 8-bit microcontrollers, dus wellicht is het wat ver gezocht.

Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
Met node shell bedoelde ik eigenlijk mongo shell. Kan mijn node code dus uitsluiten als boosdoener. Vannacht nog maar een keer vers installeren en kijken of ik hetzelfde heb.

Niemand een Pi met mongodb die ff kan checken of dit reproduceerbaar is?

No worries m8


Acties:
  • 0 Henk 'm!

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

Als het mogelijk is dat de grootste en kleinste en waarde in een integer past bijvoorbeel 1,2Kg = 1200 gram of 1,25 euro = 125 euro cent. Dit is dat een veel betere optie omdat flotingpoints bij benadering zijn. Van floatingpoints kun je af en toe behoorlijke hoofdpijn van kreigen en dat geld niet alleen voor de Rasberry Pi.

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 01:07
Zoiets zou het best kunnen zijn idd. Zo ben ik ook eens op de koffie gekomen met Floating points... :P

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
Bedankt voor de video, erg interessant.
Bovenstestaande kan ik overigens ook reproduceren op mijn pi in node shell
code:
1
2
> console.log(0.1+0.2)
0.30000000000000004


Maar terug naar wat ik probeer te doen. Ik store gewoon een value hier ( in mijn geval een temperatuur ) die bij uitlezen niet in de verste verte op het getal lijkt wat ik heb ingegeven.

No worries m8


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09

mad_max234

AMD Athlon II M320

Dogooder schreef op dinsdag 04 februari 2014 @ 09:45:
Als het op ubuntu wel werkt, zou ik zeggen dat datatypes als gebruikt in de code niet helemaal netjes zijn. De hoeveelheid bit gebruikt voor een float verschilt dan per platform. Maar ik ken dit fenomeen alleen van 8-bit microcontrollers, dus wellicht is het wat ver gezocht.
Zover ik heb begrepen houden zowel 8bit al 32bit cpu's zich gewoon aan IEEE 754 standaard, zou niet acht handig zijn als 8bit andere uitkomst gaf dan 32bit voor float berekening. :D

8bit moet het alleen in aantal stappen bereken en word dus extra traag van.
Wikipedia: IEEE floating point

Edit/
En ik weet dat door kleine hardware verschillen er soms andere uitkomsten uitkomen ver achter de komma voor verschillende cpu's, zelfs intel en amd verschillen in uitkomsten als het heel ver achter de komma gaat kijken, maar 32bit IEEE 754 moet als het goed is allemaal dezelfde uitkomst geven en binnen de marges vallen.

[ Voor 18% gewijzigd door mad_max234 op 06-02-2014 10:03 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:45

Dogooder

dus...

Je heb wel de versie genomen die is edited voor op de Raspberry PI?
http://c-mobberley.com/wo...lation-the-working-guide/

Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:45

Dogooder

dus...

mad_max234 schreef op donderdag 06 februari 2014 @ 09:58:
[...]


Zover ik heb begrepen houden zowel 8bit al 32bit cpu's zich gewoon aan IEEE 754 standaard, zou niet acht handig zijn als 8bit andere uitkomst gaf dan 32bit voor float berekening. :D

8bit moet het alleen in aantal stappen bereken en word dus extra traag word.
Wikipedia: IEEE floating point
ik bedoelde meer het gebruik van de data types in de code, int vs int64_t. Omdat het op ubuntu (64bit aanname) wel werkt.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09

mad_max234

AMD Athlon II M320

Dat heeft niks met cpu of os te maken maar met je compiler.

@DeoDupke
Maak je gebruik van verschillende compilers? Zover ik weet bepaald de compiler welke datatype er waar toe word gewezen, uiteraard kan je dat zelf ook defineren in de meeste gevallen.

Edit/
Ken de db niet, maar gaat het daar niet fout, verwacht die wel een float in zijn tabel?

[ Voor 28% gewijzigd door mad_max234 op 06-02-2014 11:28 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
@Dogooder ik gebruik de nonx86 versie die ook op die website wordt gebruikt voor de Pi. Ubuntu is 32bit.

@mad_max234 voor ubuntu is er een gecompileerde versie beschikbaar. Op de Pi moet je zelf compilen.

Van de documentatie
By default, the mongo shell treats all numbers as floating-point values
Verder, in MongoDB hoef je geen tabellen te definieren. Je kunt gewoon json voeren. Key/Value.

Maar eens wat mensen aanschrijven die bloggen over mongo en de pi. Er is behalve 1 unsolved stackoverflow vraag ook helemaal niks te vinden.

[ Voor 14% gewijzigd door DeoDupke op 06-02-2014 20:54 ]

No worries m8


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 01:07
Klopt, daar liep ik ook tegenaan bij het gebruik van MongoDB tijdens mijn bachelor.
Er is weinig informatie over te vinden. Ik gebruikte MongoDB i.c.m. Python 3 en PyMongo.

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
Puch-Maxi schreef op donderdag 06 februari 2014 @ 22:16:
Klopt, daar liep ik ook tegenaan bij het gebruik van MongoDB tijdens mijn bachelor.
Er is weinig informatie over te vinden. Ik gebruikte MongoDB i.c.m. Python 3 en PyMongo.
En hoe ben je daar verder mee omgegaan?

No worries m8


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 01:07
Ik probeer eerst zelf zo veel mogelijk informatie te verzamelen, uit boeken, stackoverflow, usenet etc. Uiteindelijk was er maar heel weinig over te vinden (over mijn specifieke probleem). Gelukkig kon ik het toen aan mijn professor vragen, daar zijn ze immers ook voor. Maar ik kan me voorstellen dat jij die luxe niet hebt.

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
ah, ik dacht dat je tegen dit float probleem was aangelopen en was geinteresseerd hoe je het dan had opgelost.

No worries m8


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 01:07
Ik kan het onder Debian overigens niet reproduceren.
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
MongoDB shell version: 2.0.6
connecting to: test
> db.readings.insert({"henk":12.12})
> db.readings.insert({"henk":2})
> db.readings.find()
{ "_id" : ObjectId("52f7f697fc97afcb6aeb8480"), "henk" : 12.12 }
{ "_id" : ObjectId("52f7f6a1fc97afcb6aeb8481"), "henk" : 2 }
>

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • NS_5
  • Registratie: Februari 2005
  • Laatst online: 18-12-2024
Ben je er al uit? Misschien kun je proberen na te gaan of je wel de correcte/verplichte flags voor ARM gebruikt bij het compilen? Mijn gok is dat je per ongeluk een softfloat (of juist hardfloat) flag had moeten gebruiken.

Er bestaat ook een 10gen repository trouwens. Als je die gebruikt weet je zeker dat hij correct gecompiled is.

Acties:
  • 0 Henk 'm!

  • DeoDupke
  • Registratie: Maart 2002
  • Laatst online: 26-03-2024
@NS_5 ah, das een goeie. Maar eens kijken of ik nog wat kan sleutelen aan de flags.

@Puch-Maxi, ik neem aan dat die debian niet op je Pi draait? Op laptop ubuntu kan ik het zelf ook niet reproduceren.

No worries m8

Pagina: 1