मैं इन पढ़ लिया है:फ़्लोटिंग पॉइंट ऑपरेशंस कुछ भाषाओं में अलग क्यों दिखते हैं?
वे समझाने "कैसे"। मैं जानना चाहता हूं कि यह इन भाषाओं में अलग क्यों है। मुझे उम्मीद है कि समान इनपुट दिए गए समान परिणाम।
test.js
#!/usr/bin/env node
var nine = 9.0;
var pointOhOhOne = 0.001;
var result = nine * pointOhOhOne;
console.log(result);
test.java
public class test {
public static void main(String[] argv) {
double nine = 9.0d;
double pointOhOhOne = 0.001d;
double result = nine * pointOhOhOne;
System.out.println(result);
}
}
test.c
#include "stdio.h"
int main() {
double nine = 9.0;
double pointOhOhOne = 0.001;
double result = nine * pointOhOhOne;
printf("%f", result);
}
test.rb
#!/usr/bin/env ruby
nine = 9.0
pointOhOhOne = 0.001
result = nine * pointOhOhOne
print result
test.py
#!/usr/bin/env python
nine = 9.0
pointOhOhOne = 0.001
result = nine * pointOhOhOne
print result
परिणाम:
ruby 0.009000000000000001
python 0.009
node 0.009000000000000001
java 0.009000000000000001
c 0.009000
सार: https://gist.github.com/reklis/6694ad5fb01991a79a1a
शायद अलग-अलग भाषाओं में सभी _do_ समान उत्तर प्राप्त करते हैं, लेकिन जिस तरह से वे इसे प्रदर्शित करते हैं, वह अलग है। उदाहरण के लिए, आप 'दशमलव' मॉड्यूल का उपयोग कर पाइथन में अधिक मुद्रित सटीकता प्राप्त कर सकते हैं। 'दशमलव आयात करें; प्रिंट दशमलव। दशमलव (9.0 * 0.001) '0.00 9 000000000000001054711873393898713402450084686279296875' देता है। – Kevin
चूंकि आप वास्तव में परीक्षण नहीं करते हैं कि किसी भी मूल्य में विशेष रूप से किसी भी चीज़ के बराबर * बराबर * है, क्या आपका प्रश्न वास्तव में है कि * प्रतिनिधित्व * अलग क्यों हैं? – DSM
यह डिफ़ॉल्ट रूप से सी/सी + जैसा दिखता है [प्रिंट 6 महत्वपूर्ण अंक] (http://stackoverflow.com/questions/20135901/c-cout-double-not-printing-decimal-places)। – rgettman