Работает 100%.
import java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
Я на самом деле использовал winforms, и это было прекрасно. Это был УЖАСНЫЙ ТОРЕЦ, но это работало.
, Очевидно, не используйте P/Invoke или любой материал win32 как реестр. Также знайте о любом третьем лице DLL. Например, мы используем третье лицо SQLite dll, который на самом деле содержит собственный код в нем, который мы должны выгрузить, если мы хотим работать на OSX/linux.
Я ненавижу термин "Лучшая практика", потому что кажется, что некоторые практики могут быть лучшими в любом контексте, который является опасной вещью, но я скажу то, что я рассматриваю "Хорошей практикой" для многоплатформенного кода (и для большей части другого типа разработки):
Использование непрерывный механизм интеграции и сборка для всех целевых платформ все время .
слишком сложные Звуки? Ну, если действительно необходимо поддерживать несколько платформ, лучше чтобы сделать это. Неважно, насколько осторожный Вы со своим кодом и использованием библиотеки, если Вы протестируете слишком поздно, то Вы проведете looong часы, переделывая большие части приложения.
Не упустите что-либо, чтобы сделать с именем файла и управлением путем и использовать портативные методы.NET в Система. IO.Path т.е.
вместо:
string myfile = somepath + "\\file.txt";
сделайте:
string myfile = Path.Combine(somepath, "file.txt");
, Если бы необходимо указать разделитель пути затем, Вы использовали бы Путь. Разделитель и т.д.
Не используйте Windows. Формы для графический интерфейсов пользователя, но Моно, вероятно, уже упомянули это. Gtk# намного более последователен и надежен для кросс-платформенных графический интерфейсов пользователя.
Не используйте "\r\n" для новой строки. Используйте Среда. NewLine
Помнит:
L.E.: Кажется, что некоторый более новый MacOSes больше не использует "\r" разделитель строки.
Несколько лет назад я советовал бы Вам покупать себя копия моего книга по межплатформенной.NET, но как книга, несколько устаревшая теперь, действительно необходимо придерживаться информации Моно сайта.
Моно Миграция Анализатор (MoMA) инструмент довольно хорош для анализа exsisting приложения.NET и предупреждения Вас проблем мобильности, но лучший выбор для нового кода состоит в том, чтобы использовать последнюю стабильную версию Моно для Вашей технической разработки.
, Поскольку Orion сказал, что необходимо быть осторожными при использовании третьей стороны DLLs, хотя мой соавтор записал инструмент NativeProbe для анализа DLLs для P/Invoke dependenecies, если Вы действительно хотите быстро проверить стороннее программное обеспечение.
, Если Вы полны решимости разработать на MS.NET затем, необходимо попытаться удостовериться, чтобы Вы также создали и модульный тест на Моно, и необходимо также не упустить много Windows определенные пространства имен, такие как Microsoft. Win32 и Система. Пространства имен управления.
Если Вы хотите, чтобы код был портативным, необходимо тесно рассмотреть список завершенных функций на Моно сайте. Они вдаются в подробности о каждом классе в платформе и уровень полноты. Необходимо будет принять эти вещи во внимание во время процесса проектирования так, чтобы Вы не зашли слишком далеко вниз путь и обнаружили, что критическая опция еще не была реализована.
Существуют некоторые другие простые вещи. Как не принимают символов пути. Или новые строки .
я - один из людей, который регулярно компилирует NUnit на Моно на Linux или OSX.
кроме того, не предполагайте, что компиляторы работают точно то же. Мы недавно нашли проблему, где компилятор C# MS, кажется, включает вещи, которые Моно не делает, требуя дополнительных ссылок в нашем сценарии сборки.
, Кроме которого, это было довольно просто. Я помню первый раз, когда мы добрались GUI, работающий Моно / Linux - было довольно захватывающе (даже если это было довольно ужасно)
Один недостающий объект: Удостоверьтесь, что имена файлов чувствительны к регистру. Файл. Откройте ("MyFile.txt"); движение не должно работать над Unix, если Ваш файл называют myfile.txt.