/ / इसे एक इंट (जावा) में बदलने के लिए एक डबल चक्कर लगाना - जावा, डबल, इंट, गोलाई

इसे एक int (जावा) - जावा, डबल, int, राउंडिंग में बदलने के लिए एक डबल गोल करना

अभी मैं यह कोशिश कर रहा हूँ:

int a = round(n);

कहा पे n एक है double लेकिन यह काम नहीं कर रहा है। मैं क्या गलत कर रहा हूं?

उत्तर:

195 उत्तर के लिए № 1

वापसी का प्रकार क्या है round() स्निपेट में विधि?

अगर यह है Math.round() विधि, यह एक लंबा रिटर्न देता है जब इनपुट परम डबल होता है।

तो, आपको रिटर्न वैल्यू देनी होगी:

int a = (int) Math.round(doubleVar);

जवाब के लिए 26 № 2

यदि आप Math.round की तरह "t" करते हैं, तो आप इस सरल दृष्टिकोण का भी उपयोग कर सकते हैं:

int a = (int) (doubleVar + 0.5);

जवाब के लिए 12 № 3

गोलाई दोहरा के सबसे करीब" पूर्णांक इस तरह:

1.4 -> 1

1.6 -> 2

-2.1 -> -2

-1.3 -> -1

-1.5 -> -2

private int round(double d){
double dAbs = Math.abs(d);
int i = (int) dAbs;
double result = dAbs - (double) i;
if(result<0.5){
return d<0 ? -i : i;
}else{
return d<0 ? -(i+1) : i+1;
}
}

आप हालत बदल सकते हैं (परिणाम <0.5) जैसा आप चाहें।


जवाब के लिए 3 № 4
import java.math.*;
public class TestRound11 {
public static void main(String args[]){
double d = 3.1537;
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
// output is 3.15
System.out.println(d + " : " + round(d, 2));
// output is 3.154
System.out.println(d + " : " + round(d, 3));
}

public static double round(double d, int decimalPlace){
// see the Javadoc about why we use a String in the constructor
// http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(double)
BigDecimal bd = new BigDecimal(Double.toString(d));
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
}

उत्तर के लिए 1 № 5

का दस्तावेजीकरण Math.round कहते हैं:

तर्क को पूर्ण करने का परिणाम देता है a पूर्णांक। परिणाम के बराबर है (int) Math.floor(f+0.5).

करने की आवश्यकता नहीं है int। शायद यह अतीत से बदल गया था।


जवाब के लिए 0 № 6
public static int round(double d) {
if (d > 0) {
return (int) (d + 0.5);
} else {
return (int) (d - 0.5);
}
}

उत्तर के लिए 0 № 7

Math.round फ़ंक्शन ओवरलोडेड है जब यह एक फ्लोट मूल्य प्राप्त करता है, तो यह आपको एक इंट देगा। उदाहरण के लिए यह काम करेगा।

int a=Math.round(1.7f);

जब यह एक डबल मूल्य प्राप्त करता है, तो यह आपको एक लंबा समय देगा, इसलिए आपको इसे इंट में टाइप करना होगा।

int a=(int)Math.round(1.7);

यह परिशुद्धता के नुकसान को रोकने के लिए किया जाता है। आपकी डबल वैल्यू 64 बिट है, लेकिन तब आपका इंट वैरिएबल केवल 32 बिट स्टोर कर सकता है, इसलिए यह सिर्फ इसे लॉन्ग में कनवर्ट करता है, जो 64 बिट है, लेकिन आप इसे 32 बिट पर टाइप कर सकते हैं जैसा कि ऊपर बताया गया है।


-1 उत्तर के लिए № 8

आपको वास्तव में एक और पूर्ण उदाहरण पोस्ट करने की आवश्यकता है, इसलिए हम देख सकते हैं कि आप क्या करने की कोशिश कर रहे हैं। आपने जो पोस्ट किया है, यहां से मैं जो देख सकता हूं। पहला, कोई बिल्ट-इन नहीं है round() तरीका। आपको कॉल करने की आवश्यकता है Math.round(n), या सांख्यिकीय रूप से आयात करें Math.round, और फिर इसे कॉल करें जैसे आपके पास है।