2016-07-07 5 views
2

Эта функция всегда работала правильно для меня, показывая десятичные знаки, даже если это .00. Теперь он не показывает окончательные нули.Asp classic formatnumber, не отображающий окончательные нули

Пример:

<%= FormatNumber(1000,2) %> 

Возвращает мне 1000.

<%= FormatNumber(1000.99999,2) %> 

Возвращает мне 1000.99999.

Кто-нибудь знает, в чем проблема?

+0

Что вы получаете, если вводите ** FormatNumber (1000) **? – statosdotcom

+0

«неправильное количество аргументов или недопустимое присвоение свойств» – bruno

+0

Извините, правильный синтаксис будет ** response.write (FormatNumber (1000)) ** ИЛИ ** <% = FormatNumber (1000)%> ** with "= «сигнал в открывающем теге. – statosdotcom

ответ

2

Я собираюсь сделать это как ответ, так как я только что попробовал и получил точно описанные симптомы.

Мне кажется, что есть некоторая функция в вашем коде с именем FormatNumber. Если функция определена более одного раза, VBScript будет использовать наиболее локально определенную версию. Другими словами, если вы напишете функцию и присвоите ей то же имя, что и встроенная функция, используйте вашу версию, а не встроенную.

Для встроенной функции FormatNumber все аргументы, кроме первого, не являются обязательными, поэтому FormatNumber(1000) будет работать нормально, в том смысле, что он не вызывает ошибки. Однако, если вы пишете функцию самостоятельно, вы не можете делать необязательные аргументы, поэтому, если функция ожидает два аргумента и вы вызываете ее только с одним, вы получите синтаксическую ошибку. Это именно то поведение, которое вы описываете.

Проверьте свою страницу и все включенные файлы (если есть). Я готов поспорить, что доллары на пончики вы найдете примерно следующее:

Function FormatNumber(inputNumber,ignoredDecimalDigitsParam) 
'... possibly a bunch of code, all boiling down to: 
    FormatNumber = inputNumber 
End Function 
+0

Вот именно! На странице с тем же именем была пользовательская функция, и я не понимал. Большое спасибо! – bruno