Neo4j & Cypher: Rounding a Float Value to Decimal Places
Join the DZone community and get the full member experience.
Join For FreeAbout 6 months ago, Jacqui Read created a github issue explaining how she wanted to round a float value to a number of decimal places but was unable to do so due to the round function not taking the appropriate parameter.
I found myself wanting to do the same thing last week where I initially had the following value:
RETURN toFloat("12.336666") AS value
I wanted to round that to 2 decimal places and Wes suggested multiplying the value before using ROUND and then dividing afterwards to achieve that.
For two decimal places we need to multiply and divide by 100:
WITH toFloat("12.336666") AS value RETURN round(100 * value) / 100 AS value
12.34
Michael suggested abstracting the number of decimal places like so:
WITH 2 as precision WITH toFloat("12.336666") AS value, 10^precision AS factor RETURN round(factor * value)/factor AS value
If we want to round to 4 decimal places we can easily change that:
WITH 4 as precision WITH toFloat("12.336666") AS value, 10^precision AS factor RETURN round(factor * value)/factor AS value
12.3367
The code is available as a graph gist too if you want to play around with it. And you may as well check out the other gists while you’re at it – enjoy!
Published at DZone with permission of Mark Needham, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments