diff --git a/modules/price/commerce_price.module b/modules/price/commerce_price.module
index 7196429..e92b8af 100644
--- a/modules/price/commerce_price.module
+++ b/modules/price/commerce_price.module
@@ -621,10 +621,8 @@ function commerce_price_field_widget_form(&$form, &$form_state, $field, $instanc
     // Convert the price amount to a user friendly decimal value.
     $default_amount = commerce_currency_amount_to_decimal($items[$delta]['amount'], $currency['code']);
 
-    // Run it through number_format() to add the decimal places in if necessary.
-    if (strpos($default_amount, '.') === FALSE || strpos($default_amount, '.') > strlen($default_amount) - $currency['decimals']) {
-      $default_amount = number_format($default_amount, $currency['decimals'], '.', '');
-    }
+    // Run it through number_format() to add the decimal places in.
+    $default_amount = number_format($default_amount, $currency['decimals'], $currency['decimal_separator'], '');
 
     $default_currency_code = $items[$delta]['currency_code'];
   }
@@ -740,6 +738,12 @@ function commerce_price_field_widget_form(&$form, &$form_state, $field, $instanc
  */
 function commerce_price_field_widget_validate($element, &$form_state) {
   if ($element['amount']['#value'] !== '') {
+    // Get currency
+    $currency_code = $element['currency_code']['#value'];
+    $currency = commerce_currency_load($currency_code);
+    // Convert decimal separator from currency to default ('.')
+    $decimal_separator = $currency['decimal_separator'];
+    $element['amount']['#value'] = str_replace($decimal_separator, '.', $element['amount']['#value']);
     // Ensure the price is numeric.
     if (!is_numeric($element['amount']['#value'])) {
       form_error($element['amount'], t('%title: you must enter a numeric value for the price amount.', array('%title' => $element['amount']['#title'])));
