ну, спустя много времени я нашел этот пост: При получении неоднозначного совпадения найдено исключение при вызове DeleteAsync
я добавил IsDeleted и Id для моих сущностей; следовательно, код при генерации был плохим.
Вы пробовали использовать класс java.text.DecimalFormat ?
System.out.println(new DecimalFormat().format(1.0));
выводит:
1
, тогда как:
System.out.println(new DecimalFormat().format(1.2));
выводит:
1.2
редактировать : Этот код приводит к тому, что дробная часть пропадает, если экспонента составляет 17 цифр, из-за моего непонимания того, как String.format отформатировал эти числа. Так что не используйте этот код: P
Спасибо за ввод, ребята. Мне не удалось найти способ настроить DecimalFormat или NumberFormat для точного клонирования функциональности, но, похоже, этот метод работает (с последующим примером):
String.format("%.17g", x).replaceFirst("\\.?0+(e|$)", "$1");
main.c
#include <stdio.h>
int main (int argc, char const *argv[])
{
printf("%.*g\n", 17, -0.0);
printf("%.*g\n", 17, 0.0);
printf("%.*g\n", 17, 1.0);
printf("%.*g\n", 17, 1.2);
printf("%.*g\n", 17, 0.0000000123456789);
printf("%.*g\n", 17, 1234567890000000.0);
printf("%.*g\n", 17, 0.0000000123456789012345678);
printf("%.*g\n", 17, 1234567890123456780000000.0);
return 0;
}
Main.java
class Main {
public static String formatDouble(double x) {
return String.format("%.17g", x).replaceFirst("\\.?0+(e|$)", "$1");
}
public static void main(String[] args) {
System.out.println(formatDouble(-0.0));
System.out.println(formatDouble(0.0));
System.out.println(formatDouble(1.0));
System.out.println(formatDouble(1.2));
System.out.println(formatDouble(0.0000000123456789));
System.out.println(formatDouble(1234567890000000.0));
System.out.println(formatDouble(0.0000000123456789012345678));
System.out.println(formatDouble(1234567890123456780000000.0));
}
}
и их выходы:
$ gcc foo.c && ./a.out -0 0 1 1.2 1.23456789e-08 1234567890000000 1.2345678901234567e-08 1.2345678901234568e+24 $ javac Main.java && java Main -0 0 1 1.2 1.23456789e-08 1234567890000000 1.2345678901234567e-08 1.2345678901234568e+24
ну, вы можете указать, сколько цифр вы хотите: «% .2g» отобразит 1,2 как 1,20
Вы можете использовать NumberFormat . Установив минимальную дробную часть на 0, но оставив максимальную больше, он должен делать то, что вы хотите.
Это не так просто, как printf, но оно должно работать.