2011-02-04 3 views
1

У меня есть уникальная проблема. У меня есть база данных с большим количеством таблиц, и я пытаюсь сделать некоторое сравнение каждой таблицы с файлом. теперь в некоторых случаях my db содержит столбцы double/float, и они могут превышать определенное количество знаков после запятой, чем одно и то же столбец в файле. Скажем для удобства, мы выбираем это не 4 знака после запятой.Округление поплавка/двойное условие

Теперь я хочу преобразовать все столбцы float/double, возвращенные моей db, в строку из четырех знаков после запятой, если ее больше, чем это. Как я могу достичь того же. Обратите внимание, что каждая из этих таблиц может содержать более 2000 строк, и я не хочу, чтобы это сравнение было тяжелым. Любая идея, как я могу добиться того же?

Заранее спасибо

На основании некоторых ответов и комментариев:

а) СУБД: MS SQL Server

б) Я хочу знаков после запятой только купировать, если он превышает определенный нет. т.е. если нет 12.123, он должен ставить 12.123 и nt 12.1230

Я понимаю, что я могу это сделать, используя #, но # просто печатает нет, он не округляет no ie, если нет 12.12347 он должен округлить 12.1235

+1

Какие СУБД вы используете? –

+0

MS SQL-сервер. Как это помогает? – Baz1nga

ответ

1

Нечто подобное для ограничения поплавка ряда знаков после запятой:

string stFloat = String.Format("{0:0.0000}", FLOAT_VALUE); 

Примените это к данным, получен из БД.

+2

Это правильно. Также обратите внимание, что у вас есть несколько различных параметров для строкового формата. Полный список [приведен здесь] (http://msdn.microsoft.com/en-us/library/0c899ak8.aspx), но сводка такова. Ноль («0») заменит ноль соответствующей цифрой, если она присутствует, иначе она оставит 0 в возвращаемой строке. Заполнитель цифр («#») заменит знак соответствующей цифрой, если он присутствует, иначе цифра не появится в возвращаемой строке. –

+0

Но если я не хочу задние 0, то ??? – Baz1nga

+0

Также я хочу, чтобы он округлялся не корректно, т.е. если он равен 12.12347, тогда он должен быть 12.1235 – Baz1nga