Это форматирование по умолчанию, предоставляемое Oracle. Если вам нужны ведущие нули на выходе, вам необходимо явно указать формат. Используйте:
SELECT TO_CHAR(0.56,'0.99') FROM DUAL;
или даже:
SELECT TO_CHAR(.56,'0.99') FROM DUAL;
То же самое верно для конечных нулей:
SQL> SELECT TO_CHAR(.56,'0.990') val FROM DUAL;
VAL
------
0.560
Общий вид преобразования TO_CHAR функция:
Если это имеет значение Словарь (концептуально) хэш-таблица.
, Если Вы имели в виду, "почему мы используем Dictionary<TKey, TValue>
класс вместо Hashtable
класс?", тогда это - легкий ответ: Dictionary<TKey, TValue>
универсальный тип, Hashtable
не. Это означает, что Вы получаете безопасность типов с Dictionary<TKey, TValue>
, потому что Вы не можете вставить случайный объект в нее, и Вы не должны бросать значения, которые Вы вынимаете.
Интересно, Dictionary<TKey, TValue>
реализация в Платформе.NET основана эти Hashtable
, как можно сказать из этого комментария в его исходном коде:
универсальный Словарь был скопирован с источника Хеш-таблицы
Эти Hashtable
свободно введенная структура данных, таким образом, можно добавить ключи и значения любого типа к Hashtable
. Dictionary
класс является безопасным с точки зрения типов Hashtable
реализация, и ключи и значения со строгим контролем типов. При создании Dictionary
экземпляр, необходимо определить типы данных для обоих ключ и значение.
Люди говорят, что Словарь совпадает с хэш-таблицей.
Это не обязательно верно. Хэш-таблица является одним путем к реализация словарь. Типичный в этом, и это может быть по умолчанию в.NET в Dictionary
класс, но это не по определению единственное.
Вы могли одинаково хорошо реализовать словарь с помощью связанного списка или дерева поиска, это просто не будет как эффективное (для некоторой метрики эффективных).
Поскольку Dictionary
универсальный класс (Dictionary<TKey, TValue>
), так, чтобы доступ к его содержанию был безопасен с точки зрения типов (т.е. Вы не должны бросать от Object
, как Вы делаете с Hashtable
).
Выдерживают сравнение
var customers = new Dictionary<string, Customer>();
...
Customer customer = customers["Ali G"];
к
var customers = new Hashtable();
...
Customer customer = customers["Ali G"] as Customer;
Однако Dictionary
, реализован как хэш-таблица внутренне, так технически она работает тот же путь.
В.NET различие между Dictionary<,>
и HashTable
, прежде всего, что первый - универсальный тип, таким образом, Вы извлекаете всю пользу из дженериков с точки зрения статической проверки типа (и уменьшенная упаковка, но это не является столь большим, как люди склонны думать с точки зрения производительности - существует определенная стоимость памяти для упаковки, хотя).
К вашему сведению: В.NET, Hashtable
ориентировано на многопотоковое исполнение для использования несколькими потоками читателя и единственным потоком записи, в то время как в Dictionary
общедоступные статические участники ориентированы на многопотоковое исполнение, но любые члены экземпляра, как гарантируют, не будут ориентированы на многопотоковое исполнение.
Мы должны были возвратить все наши Словари к Hashtable
из-за этого.
Еще одно отличие, которое я могу выяснить, это:
Мы не можем использовать словарь
Обратите внимание, что MSDN говорит: «Словарь <(из <(of <(TKEY, TVALUE)>) в качестве хеш-таблица », а не «словарь <(из <(TKEY, TVALUE>) >) Класс реализован как Hashtable словарь «
»
, не реализуется как hastable, но он реализован после концепции хеш-таблица. Внедрение не связано с классом Hashtable из-за использования дженериков, хотя внутренне Microsoft могла бы использовать один и тот же код и заменил символы типа типа с помощью TwaLue.
в .NET 1.0 Generics не существовало; Это где начался хэш и арайлист.
Согласно тому, что я вижу при использовании .NET Reflector :
[Serializable, ComVisible(true)]
public abstract class DictionaryBase : IDictionary, ICollection, IEnumerable
{
// Fields
private Hashtable hashtable;
// Methods
protected DictionaryBase();
public void Clear();
.
.
.
}
Take note of these lines
// Fields
private Hashtable hashtable;
Итак, мы можем быть уверены, что DictionaryBase внутренне использует HashTable.