float
и double
плавание двоичный файл типы точки . Другими словами, они представляют число как это:
10001.10010110011
двоичное число и местоположение двоичной точки оба кодируются в значении.
decimal
плавание десятичное число тип точки. Другими словами, они представляют число как это:
12345.65789
Снова, число и местоположение десятичное число точка оба кодируется в значении †“, это - то, что делает decimal
все еще тип с плавающей точкой вместо типа фиксированной точки.
важная вещь отметить состоит в том, что люди привыкли представлять нецелые числа в десятичной форме и ожидают точные результаты в десятичных представлениях; не все десятичные числа являются точно представимыми в двоичной плавающей точке †“0.1, например, †“поэтому при использовании двоичного значения с плавающей точкой, Вы на самом деле получите приближение к 0,1. Вы все еще получите приближения, когда использование плавающей десятичной точки также †“результат деления 1 на 3 не может быть точно представлено, например.
Что касается того, что использовать когда:
Для значений, которые являются "естественно точными десятичными числами", хорошо использовать decimal
. Это обычно подходит для любых понятий, изобретенных людьми: финансовые значения являются самым очевидным примером, но также существуют другие. Считайте счет данным дайверам или конькобежцам, например.
Для значений, которые являются большим количеством артефактов природы, которая не может действительно измеряться точно так или иначе, float
/ double
, являются более соответствующими. Например, научные данные были бы обычно представлены в этой форме. Здесь, исходные значения не будут "по десятичной системе точны" для начала, таким образом, для ожидаемых результатов не будет важно поддержать "десятичную точность". Плавающие типы двоичной точки намного быстрее для работы с, чем десятичные числа.
Попробуйте это,
log4j. appender.AppLog.File = $ {catalina.home} /logs/app1.log
. swallowOutput = "true"
для каждого контекста, чтобы stdout, stderr переходили в ваш собственный журнал . Мы делаем это на Tomcat 5.5, но я думаю, что он должен работать и на 6.0.
РЕДАКТИРОВАТЬ: Вот наш META-INF / context.xml,
<?xml version="1.0" encoding="UTF-8"?>
<Context override="true" swallowOutput="true" useNaming="false">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager pathname=""/>
</Context>