Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जब मैं mysql फ्लोट कॉलम में xx जोड़ता हूं, तो यह गलत परिणाम है, क्या यह एक बग है?

आपकी समस्या का कुछ लेना-देना है कि आपका फ़्लोटिंग पॉइंट मान कितना बड़ा है, लेकिन मुझे 100% यकीन नहीं है कि क्यों। मैंने छोटी संख्या के साथ एक समान पंक्ति को अद्यतन करने का परीक्षण किया और यह ठीक काम किया। आपको जहां भी संभव हो उद्धरण चिह्नों का उपयोग करने से बचना चाहिए क्योंकि इसके लिए अतिरिक्त प्रसंस्करण की आवश्यकता होती है। यह SO प्रश्न देखें:मूल्य

यहाँ मेरा आसान कामकाज है जैसे टिम बेगेलेसेन ने सुझाव दिया था:

CREATE TABLE `xxx` (
  `uid` int(11) NOT NULL,
  `money` decimal(10,2) NOT NULL DEFAULT '0.00' ,
  `real_money` float(10,2) NOT NULL ,
  `available_invoice` float(10,2) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

सम्मिलित करें:

USE dbname;
insert into xxx Values(1234, 99959040.00, 0.00, 99999.00);

बिना तार के अपडेट करें:

update xxx set money = money - 20 where uid = 1234;

बड़े फ़्लोटिंग पॉइंट मानों के साथ गणना करते समय कुछ अजीब चीजें होती हैं। इनमें से कुछ मुद्दे मशीन पर निर्भर हैं और आपके पास किस प्रकार के प्रोसेसर से संबंधित हैं। यहां और पढ़ें:http://dev.mysql .com/doc/refman/5.7/hi/problems-with-float.html

इसके अलावा, एक अन्य SO प्रश्न के अनुसार फ़्लोटिंग पॉइंट मान धन मूल्यों को संग्रहीत करने का एक अच्छा तरीका नहीं है। फ्लोट और दशमलव डेटा प्रकार के बीच अंतर (दूसरा उत्तर देखें)।

ऐसा लगता है कि decimal . का उपयोग कर रहे हैं और numeric डेटा प्रकार mysql में पैसे के कॉलम के लिए सर्वोत्तम हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पंडों के साथ mysql डेटाबेस तालिका में पंक्तियों को बदलें DataFrame

  2. cPanel में MySQL डेटाबेस को कैसे रिपेयर करें?

  3. MySQL में अल्पविराम के साथ संख्याओं को कैसे प्रारूपित करें

  4. @ संग्रहित प्रक्रिया में प्रतीक?

  5. PHP - IE डेटाबेस से अद्यतन मान प्रदर्शित नहीं करता है। क्रोम, एफएफ, ओपेरा - ठीक