बाकी usage documentation बीमित इस तरह उदाहरण है:भ्रम बीमित फ्लोटिंग प्वाइंट तुलना
get("/lotto").then().body("lotto.lottoId", equalTo(5));
ठीक है, तो वे पूर्णांक मूल्य 5
से तुलना करने के लिए एक Hamcrest मिलान का उपयोग कर रहे हैं।
लेकिन वे एक वर्ग कह रही है कि इतना तय है कि JSON पार्सर डिफ़ॉल्ट रूप से float
और नहीं double
, इसलिए बजाय 12.12
की तुलना की का उपयोग करता है मैं 12.12f
से तुलना करना चाहिए:
get("/price").then().body("price", is(12.12f));
प्रतीक्षा है, तो कैसे 5
काम किया है ऊपर, जो int
है और double
नहीं है? क्या JSON पार्सर पूर्णांक और गैर-पूर्णांक मानों के लिए विभिन्न प्राइमेटिव का उपयोग करता है?
लेकिन यह अधिक भ्रमित हो जाता है। अच्छी तरह से ज्ञात प्रोग्रामर जानते हैं कि आपको फ्लोटिंग पॉइंट मानों की तुलना किसी भी तरह से तुलना नहीं करनी चाहिए (फ्लोटिंग-पॉइंट मानों को कैसे संग्रहीत किया जाता है, इसकी जटिलताओं के कारण)। इसके बजाय आपको Matchers.closeTo(double operand, double error)
का उपयोग करना चाहिए जो त्रुटि का मार्जिन प्रदान करता है। ऐसा करने का यह सही तरीका है। लेकिन प्रतीक्षा करें --- भले ही मैं 12.12f
में Matchers.closeTo (डबल ऑपरेंड, डबल त्रुटि) में पास करता हूं, फिर भी यह इसे double
में परिवर्तित नहीं करेगा? क्या यह आरईएसटी आश्वासन के साथ काम करेगा?
आपका उत्तर वास्तव में मेरे प्रश्न का उत्तर देने के लिए निकटतम आया, हालांकि आपके कुछ उत्तर आधिकारिक नहीं थे। आपके द्वारा लाया जाने वाला सबसे महत्वपूर्ण बिंदु यह है कि यदि मैं 'Matcher.closeTo()' का उपयोग करता हूं (और यही वही है जो हमें किसी भी तरह से उपयोग करना चाहिए) इससे कोई फर्क नहीं पड़ता कि जेएसओएन पार्सर क्या कहता है। –