2014-10-17 3 views
0

Я использую следующий код, но я столкнулся вопрос, где он показал мне значение $1,099.00 в качестве значения,Ошибка броска при использовании DecimalFormat()

Вот код, я использую:

#LSCurrencyFormat(DecimalFormat(unitprice),'local','#session.currencylocale#')# 

с выше коде, я получаю следующее сообщение об ошибке:

The value 1,099.00 cannot be converted to a number. 

Я попытался обертывание DecimalFormat() снаружи, но это только дает мне другую ошибку.

+0

Не глядя, что вы можете сделать, я предполагаю, что LSCurrencyFormat ожидает число в качестве первого аргумента. Поскольку DecimalFormat возвращает строку, не используйте ее. –

ответ

1

Попробуйте

#LSCurrencyFormat(LSParseNumber(unitprice),'local','#session.currencylocale#')# 

Или это просто удалить запятые.

#LSCurrencyFormat(Replace(unitprice,",","","ALL"),'local','#session.currencylocale#')# 

Если это не работает, вы можете использовать это, чтобы удалить все нечисловая дружественные символы из строки

#LSCurrencyFormat(ReReplace(unitprice,"[^0-9\.\-\+]","","ALL"),'local','#session.currencylocale#')# 

Edit: Дэн прав насчет DecimalFormat, и, вероятно, прямо об этом являясь источником вашей ошибки (мы не знаем, что такое # unitprice #). При работе с числами всегда следите за тем, чтобы хранить их в простейшей форме и только # показывать # их с десятичными форматами и т. П., Если это ваше предпочтение.

Например, если у меня были пользователи, вводившие суммы, особенно денежные суммы, я бы использовал один из них, чтобы очистить посторонние символы, прежде чем вставлять сумму в базу данных.

И, конечно же, как отмечает Leigh в комментариях ниже, вы всегда должны хранить номера в соответствующих типах данных для вашего провайдера баз данных (такие как int и money). Вы должны захотеть сохранить 1099.42 вместо $ 1099.42 в поле и в соответствующем типе поля.

+1

Как правило, ваши номера сохраняются и изменяются как число (без запятых или форматирования). Только отформатировать их для отображения на уровне дисплея. Это похоже на то, что вы пытаетесь сделать, но ошибка определенно указывает, что цена за единицу доллароваяформата где-то в пути. Возможно, вы ищете функцию формата доллара. –

+1

... и, очевидно, сохраните их * как числа *. т.е. столбец должен иметь числовой тип данных (десятичный, деньг и т. д.), а не 'varchar'. – Leigh

+1

@Leigh Да, я подумал, что это само собой разумеется, но я могу оценить, что это лучше сказано в буквальном смысле, особенно в контексте контекста вопроса. Я добавлю его к ответу, чтобы убедиться, что Аскер читает. –

Смежные вопросы