CSS:
#container {width: 100%; высота: 100vh; } # container.footer {float: left; ширина: 100%; высота: 20vh; Запас-топ: 80vh; фон-цвет: красный; }
HTML:
& lt; div id = "container" & gt; & lt; div class = "footer" & gt; & Lt; / дел & GT; & Lt; / дел & GT;
Это должно сделать трюк, если вы ищете отзывчивый нижний колонтитул, выровненный в нижней части страницы, который всегда держит верхний край 80% высоты окна просмотра.
Вы можете использовать метод printf
, например:
System.out.printf("%.2f", val);
Короче говоря, синтаксис %.2f
говорит Java о возврате вашей переменной (val
) с 2 десятичными знаками (.2
) в десятичном представлении числа с плавающей запятой (f
) с начала спецификатора формата (%
).
Существуют другие символы преобразования, которые вы может использовать кроме f
:
d
: десятичное целое o
: восьмеричное целое e
: с плавающей запятой в научной нотации Многие люди упоминали DecimalFormat
. Но вы также можете использовать printf
, если у вас есть последняя версия Java:
System.out.printf("%1.2f", 3.14159D);
Подробнее о строке формата printf см. В документах в Formatter.
Простой трюк состоит в том, чтобы сгенерировать более короткую версию вашей переменной, умножив ее, например. 100
, округляя его и снова разделив на 100.0
. Таким образом, вы создаете переменную с двумя десятичными знаками:
double new_variable = Math.round(old_variable*100) / 100.0;
Этот «дешевый трюк» всегда был для меня хорошим и работал на любом языке (я не человек Java, просто изучая его ).
Я бы предложил использовать String.format () , если вам нужно значение в качестве String
в вашем коде.
Например, вы можете использовать String.format()
следующим образом:
float myFloat = 2.001f;
String formattedString = String.format("%.02f", myFloat);
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
DecimalFormat df = new DecimalFormat("0.00");
– K. Sopheak
28 December 2016 в 02:57
небольшая простая программа для демонстрации:
import java.io.*;
import java.util.Scanner;
public class twovalues {
public static void main(String args[]) {
float a,b;
Scanner sc=new Scanner(System.in);
System.out.println("Enter Values For Calculation");
a=sc.nextFloat();
b=sc.nextFloat();
float c=a/b;
System.out.printf("%.2f",c);
}
}
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
Выход равен 22.35. Если вам нужно 3 десятичных точки, измените его на «% .3f».
Просто сделайте String str = System.out.printf("%.2f", val).replace(",", ".");
, если вы хотите убедиться, что независимо от Locale пользователя вы всегда будете получать / отображать «.». как десятичный разделитель. Это необходимо, если вы не хотите, чтобы ваша программа вышла из строя, если вы позже сделаете какое-то преобразование, например float f = Float.parseFloat(str);
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
Вы можете использовать DecimalFormat
. Один из способов его использования:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
Еще один способ - построить его с использованием формата #.##
.
Я считаю, что все параметры форматирования менее читабельны, чем вызов методов форматирования, но это вопрос предпочтения.
System.out.printf("%.2f", value)
? Это все еще вокруг?
– Anthony Forloney
29 March 2010 в 15:49
DecimalFormat
, я сразу подумал, что ошибаюсь, но спасибо, что разъяснил это.
– Anthony Forloney
29 March 2010 в 15:56
Посмотрите на DecimalFormat
Вот пример из учебника:
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
Если вы выберете шаблон типа "###. # # ", вы получите два десятичных знака, и я думаю, что значения округлены. Вы захотите посмотреть ссылку, чтобы получить точный формат, который вы хотите (например, хотите ли вы иметь нулевые нули)
OK - str для плавания.
package test;
import java.text.DecimalFormat;
public class TestPtz {
public static void main(String[] args) {
String preset0 = "0.09,0.20,0.09,0.07";
String[] thisto = preset0.split(",");
float a = (Float.valueOf(thisto[0])).floatValue();
System.out.println("[Original]: " + a);
a = (float) (a + 0.01);
// Part 1 - for display / debug
System.out.printf("[Local]: %.2f \n", a);
// Part 2 - when value requires to be send as it is
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
System.out.println("[Remote]: " + df.format(a));
}
}
Выход:
run:
[Original]: 0.09
[Local]: 0.10
[Remote]: 0.10
BUILD SUCCESSFUL (total time: 0 seconds)
String.format(java.util.Locale.US,"%.2f", val);
– Gomino 2 March 2016 в 17:59Locale.FRANCE
? – erickson 27 May 2016 в 20:17Locale.US
заходит слишком далеко. Если вам нужно жестко закодировать «нейтральный», локали для фальцовки фраз, рендеринга чисел и т. д., укажитеLocale.ROOT
. Это было бы уместно для текста, который будет потребляться другой программой, а не для человеческих пользователей. Для текста, представленного пользователю, почитайте их язык, независимо от того, указали ли они его явно или по умолчанию. – erickson 27 May 2016 в 20:37