# neo4j: Handling SUM's scientific notation

In some of the recent work I’ve been doing with neo4j the queries I’ve written have been summing up the values from multiple nodes and after a certain number is reached the value returned used scientific notation.

For example in a cypher query like this:

```
START category = node:categories('category_id:1')
MATCH p = category-[:has_child*1..5]->subCategory-[:has_product]->product-[:sold]->sales
RETURN EXTRACT(n in NODES(p) : n.category_id?),subCategory.category_id, SUM(sales.sales)
```

I might get a result set like this:

```
+------------------------------------------------------------------------------------------------+
| EXTRACT(n in NODES(p) : n.category_id?) | subCategory.category_id | SUM(sales.sales) |
+------------------------------------------------------------------------------------------------+
| ["246","254","255","3279",<null>,<null>] | "3279" | 3.07213e07 |
| ["246","3649","3650","4362",<null>,<null>] | "4362" | 1.023412e06 |
| ["246","287","291","308",<null>,<null>] | "308" | 504712.5999448135 |
+------------------------------------------------------------------------------------------------+
```

I wanted to be able to add the first two rows together but still have them return separately which meant I needed to convert the values into decimal notation in order to do so.

I came across a Stack Overflow thread explaining how to do it in Ruby:

```
> "%f" % "3.07213e07"
=> "30721300.000000"
```

or

```
> "3.07213e07".to_f
=> 30721300.0
```

If we want to do the same thing in Java it’d read like this:

```
double d = Double.parseDouble("3.07213e07");
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
System.out.println(f);
// returns 30721300
```

I couldn’t see a way to make the SUM function return in decimal notation but it’d be neat if there was a way to.

For now we have to apply some formatting on the result if we want to do any calculations with it.