मैं सेंसर रीडिंग से टाइमस्टैम्प मान पढ़ रहा हूं, लेकिन चूंकि उन्हें नैनोसेकंड में प्रदान किया गया है, मैंने सोचा कि मैं उन्हें दोगुना कर दूंगा और रूपांतरण कर दूंगा। परिणामस्वरूप संख्या 17 अंकों का मूल्य है, साथ ही विभाजक।दशमलव स्वरूप के बिना वैज्ञानिक नोटेशन के प्रिंट करने के लिए प्रारूपण डबल
इसे मुद्रित करने का प्रयास सीधे वैज्ञानिक नोटेशन में होता है, जो मैं नहीं चाहता, इसलिए मैं इसे दशमलव दशमलव वर्ग का उपयोग 4 दशमलव स्थानों के अनुमानित मूल्य पर आउटपुट करने के लिए करता हूं। समस्या यह है कि, हालांकि, डीबगर कई 17 दशमलव अंक दिखाता है, भले ही 'डबलवैल्यू()' कॉल के बाद भी, आउटपुट स्ट्रिंग मुझे 15 अंकों को दिखाती है।
कोड:
...
Double timestamp = (new Date().getTime()) + // Example: 1.3552299670232847E12
((event.timestamp - System.nanoTime())/1000000D);
DecimalFormat dfmt = new DecimalFormat("#.####");
switch(event.sensor.getType()){
case Sensor.TYPE_LINEAR_ACCELERATION:
case Sensor.TYPE_ACCELEROMETER:
accel = event.values.clone();
String line = "A" + LOGSEPARATOR +
dfmt.format(timestamp.doubleValue()) + // Prints: 1355229967023.28
...
मुझे लगा कि यह एक Android सटीक समस्या हो सकती है, लेकिन डिबगर गलत परिशुद्धता के साथ-साथ दिखा फ़ॉर्मेटर है। मैंने इसे स्थानीय जावा प्रोग्राम में परीक्षण किया है और दोनों कॉलों में समान अंक हैं।
क्या यह एक दशमलव फ़ार्मेट बग/सीमा है? या मुझ से कुछ गलत हो रहा है?
आपका समस्या यह है कि संख्या स्वरूप में फिट नहीं करता है:
यह संशोधित कोड का उपयोग कर रहा समाप्त हो गया है। प्रयत्न "##############।####"। –
मैंने तब भी कोशिश की, लेकिन अगर मैं भूल गया था तो वैसे भी जांच की गई। एक प्रारूप "####################### (" 7 अतिरिक्त अंकों के साथ) एक ही परिणाम नेट। – ravemir
क्या आप DecimalFormat या Android एक के java.util संस्करण का उपयोग कर रहे हैं? –