Java-дегі нөмірді дөңгелектеу

Ондық сандарға дейін дөңгелектеу сандарын қалай аламын? Мен барлық жерде әр нәрсені көрдім

currently I have my program to round up to a whole number with double rACT = Math.ceil(ACT); double rSAT = Math.ceil(SAT); double rGPA = Math.ceil(GPA);

бірақ ондық таңбалы орынға дейін айналдыру қажет

FYI - Мен мектепте оқитын студентмін Бұл әрекетті орындау үшін менің әдістерім 15-тен кем болмауы керек

2
қосылды автор Vishal, көзі
Нөмірдің дөңгелектеуі (N-орындарға) және дөңгелектеу/кесу ережелері қолданылған жолды көрсету алудың арасындағы айырмашылық бар ...
қосылды автор user166390, көзі

4 жауаптар

Мүмкін, қарапайым тәсілі бар, бірақ анық:

double rSAT = Math.ceil(SAT * 100)/100;

Бұл 2,123-ді 212,3-ге дейін өзгертеді, оны 213-ке дейін айналдырады, содан кейін оны 2,13-ке бөледі.

9
қосылды
@zuriel - Сұрақ жоғары (және Math.ceil ) дөңгелектеу нөмірлерін көрсетеді. 212,3-ден 213-ке дейін көтерілсе де, түсініктеме берілді.
қосылды автор Brendan Long, көзі
Шындығында, Math.ceil() қоңырауына 212.3 нөмірін 213 нөміріне аударуға болады. Математикада төбенің функциясы кез-келген саннан кейінгі кез-келген бүтін санға айналады, сондықтан 212.0003 213 дейін дөңгелектенеді. Math.floor (decimal + 0.5) -қа тең стандартты дөңгелектеу функциясын орындайтын Math.round() функциясын қолдануға болады.
қосылды автор Brandon Buck, көзі
Менің қабылдауым, ол санды қалай дөңгелектеу керектігін сұрап, өз шешімін берді. Кез-келген жағдайда, 212.3 деген Math.ceil() 212 кодын қоңырау шалу дұрыс емес, бұл дұрыс емес бұл қате туралы хабарлаңыз.
қосылды автор Brandon Buck, көзі

Әдетте, дөңгелектеу ең жақсы көрсету нүктесінде (мысалы, Жол, мысалы) жасалады. Осылайша, нөмірді ең жоғары дәлдікпен сақтауға/өткізуге болады және ақпарат оны пайдаланушыға көрсету кезінде қысқартылады.

Бұл код көп дегенде екі ондық таңбаға дейін айналады және төбені пайдаланады.

double unrounded = 3.21235;
NumberFormat fmt = NumberFormat.getNumberInstance();
fmt.setMaximumFractionDigits(2);
fmt.setRoundingMode(RoundingMode.CEILING);

String value = fmt.format(unrounded);
System.out.println(value);
2
қосылды

The question has been asked before, check out How to round a number to n decimal places in Java

ең қарапайым шешім, менің ойымша, бұл - Крис:

double myNum = .912385;
int precision = 10000; //keep 4 digits
myNum= Math.floor(myNum * precision +.5)/precision;
0
қосылды
Math.ceil (x) орнына Math.floor (x + 0.5) ) неге керек?
қосылды автор Brendan Long, көзі
Сондай-ақ, ол үшін әзірленген функцияны пайдалана отырып ( Math.ceil ).
қосылды автор Brendan Long, көзі
0.5 қосылса, мысалы, 1.4 -> 1.4 + 0.5 = 1.9 болса, еден (1.9) = 1 болса, 1.6 -> 1.6 + 0.5 = 2.1 қабат (2.1) = 2
қосылды автор Zohaib, көзі

Егер төменде келтірілген санды көрсетілім іздесеңіз:

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(12.912385));
0
қосылды