Самый простой способ - использовать класс Scanner
в Java и объект FileReader. Простой пример:
Scanner in = new Scanner(new FileReader("filename.txt"));
Scanner
имеет несколько методов для чтения в строках, числах и т. Д. Вы можете найти дополнительную информацию об этом на странице документации Java.
Например, прочитав весь контент в String
:
StringBuilder sb = new StringBuilder();
while(in.hasNext()) {
sb.append(in.next());
}
in.close();
outString = sb.toString();
Также, если вам нужна конкретная кодировка, вы можете использовать это вместо FileReader
:
new InputStreamReader(new FileInputStream(fileUtf8), StandardCharsets.UTF_8)
Используйте Math.Ceiling
для округления
Math.Ceiling(0.5); // 1
Используйте Math.Round
для округления
Math.Round(0.5, MidpointRounding.AwayFromZero); // 1
И Math.Floor
округлить
Math.Floor(0.5); // 0
C # использует округление банкира в Math.Round
по умолчанию. Вы должны использовать эту перегрузку:
Math.Round(0.5d, MidpointRounding.AwayFromZero) //1
Math.Round(0.4d, MidpointRounding.AwayFromZero) //0
Это просто. Итак, следуйте этому коду.
decimal d = 10.5;
int roundNumber = (int)Math.Floor(d + 0.5);
Результат - 11
Проверьте Math.Round . Затем вы можете передать результат в int
.
Устанавливает значение с плавающей запятой с двойной точностью до ближайшего целочисленного значения.
Используйте функцию вместо MidpointRounding.AwayFromZero
:
myRound(1.11125,4)
Ответ: - 1.1114
public static Double myRound(Double Value, int places = 1000)
{
Double myvalue = (Double)Value;
if (places == 1000)
{
if (myvalue - (int)myvalue == 0.5)
{
myvalue = myvalue + 0.1;
return (Double)Math.Round(myvalue);
}
return (Double)Math.Round(myvalue);
places = myvalue.ToString().Substring(myvalue.ToString().IndexOf(".") + 1).Length - 1;
} if ((myvalue * Math.Pow(10, places)) - (int)(myvalue * Math.Pow(10, places)) > 0.49)
{
myvalue = (myvalue * Math.Pow(10, places + 1)) + 1;
myvalue = (myvalue / Math.Pow(10, places + 1));
}
return (Double)Math.Round(myvalue, places);
}
Math.Round (0.5) возвращает ноль из-за ошибок округления с плавающей запятой, поэтому вам нужно добавить сумму округления к исходному значению, чтобы гарантировать, что она не округляется, например.
Console.WriteLine(Math.Round(0.5, 0).ToString()); // outputs 0 (!!)
Console.WriteLine(Math.Round(1.5, 0).ToString()); // outputs 2
Console.WriteLine(Math.Round(0.5 + 0.00000001, 0).ToString()); // outputs 1
Console.WriteLine(Math.Round(1.5 + 0.00000001, 0).ToString()); // outputs 2
Console.ReadKey();