Precision issue in stock reconciliation
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 8c6e12e..73a7ef3 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -55,7 +55,9 @@
 
 				item.current_qty = qty
 				item.current_valuation_rate = rate
-				self.difference_amount += (flt(item.qty) * flt(item.valuation_rate or rate) - (flt(qty) * flt(rate)))
+				self.difference_amount += (flt(item.qty, item.precision("qty")) * \
+					flt(item.valuation_rate or rate, item.precision("valuation_rate")) \
+					- flt(qty) * flt(rate))
 				return True
 
 		items = filter(lambda d: _changed(d), self.items)
@@ -197,8 +199,8 @@
 			"company": self.company,
 			"stock_uom": frappe.db.get_value("Item", row.item_code, "stock_uom"),
 			"is_cancelled": "No",
-			"qty_after_transaction": row.qty,
-			"valuation_rate": row.valuation_rate
+			"qty_after_transaction": flt(row.qty, row.precision("qty")),
+			"valuation_rate": flt(row.valuation_rate, row.precision("valuation_rate"))
 		})
 		self.make_sl_entries([args])
 
@@ -242,7 +244,7 @@
 
 	def set_total_qty_and_amount(self):
 		for d in self.get("items"):
-			d.amount = flt(d.qty) * flt(d.valuation_rate)
+			d.amount = flt(d.qty, d.precision("qty")) * flt(d.valuation_rate, d.precision("valuation_rate"))
 			d.current_amount = flt(d.current_qty) * flt(d.current_valuation_rate)
 			d.quantity_difference = flt(d.qty) - flt(d.current_qty)
 			d.amount_difference = flt(d.amount) - flt(d.current_amount)