Wrong result in multiplication

Hi, everybody!
I have a problem with a simple multiplication for which I have not found a solution yet. And I do just hope, that anyone here has encountered and solved it already.
The problem is as follows:
JW = (long)(Math.floor(SOLZJ*100));
JW is a long, SOLZJ is a float. At the crucial moment, SOLZJ contains the value of 582.72. The result, which JW contains, after computing the expression is 58271. So, you see, something went terribly wrong. As it is a variable, which is used in some further calculations, the error exponentiates.
Sure hope, anyone can help me with that.
By the way... I tried to use this expression outside of my method (to eliminate possible inherited errors). The following piece of code gets the same result as mentioned above:
float SOLZJ = 582.72F;
long JW;
JW = (long)(Math.floor(SOLZJ*100));
System.out.println(""+JW);
Result is 58271 instead of 58272...
Thanks for helping me out,
Matthias

what im saying is that a programming language is a box of tools, you use these to build applications (bigger, better tools)
there are a few distinct phases a program has
data aquisition
data formatting
data maipulation and calculation
if you find that the tool you are using does not perform the task, use another one, if it does not exist, build it
it is in the nature of floating point numbers/calcualations on comoputers that errors are normal, small compared to the numbers involved (hopefully)
one such 'problem' was that a financial caluclation came out 'wrong' by a billionth of a penny, wrong, but hey, who cares..
BigDecimal will solve this problem, but maybe overkill
if you require say 2 demimal point accuracy, then you could easily write your own class that holds the data as an int (value *100)

Similar Messages

  • Wrong result of multiplication !!!

    Hello!
    When i run the following code the result is wrong:
    double d = 3.4*3.4;
    System.out.println(d);
    System.out.println(d/2);
    The output is
    11.559999999999999
    5.779999999999999
    The correct result is:
    11.56
    5.78
    Is this a bug? When i use float the result is correct.
    How can i fix this problem. I am using Windows 2000 and JSDK 1.4.2

    [snip]
    The output is
    11.559999999999999
    5.779999999999999
    The correct result is:
    11.56
    5.78
    Is this a bug? You realize the two sets of numbers you have here differ by only 0.000000000000001, right? That's one quadrillionth. Are you saying you need more precision than 10^-15? Wow. Yes, if it's in a loop it will take 1,000,000,000,000,000 iterations for you to get an error of 1 unit. That number is roughly equivalent to 1/2 the number of all the grains of sand on all the beaches on the planet, and is a couple orders of magnitude larger than the number of cells in the human body (about 10 trillion, give or take).
    Just trying to throw things into perspective. Sometimes you need this sort of precision, but not often.

  • Quiz variables show wrong result on multiple quiz attempts

    Hi everbody
    cp4: I have a quiz with certificate at the end of my project. On the certificate the result is shown with the help of the variable cpInfoPercentage. The user has a maximum of 3 attempts to pass the quiz. Now, when he needs more than one attempt, the variable shows the sum of the results from each attempt. The same is true for the variable cpQuizInfoPointssored.
    Has anyone made the same experience and knows a way arount it?
    Thanks for your help.
    Petra

    I'm just bumping this up because I am having a similar problem. cpInfoPercentage variable is not resetting on multiple quiz attempts, even though quiz results screen is showing correct score and pass/fail message. Is there a way to reset this variable, or some other workaround?  THanks.

  • Wrong precision of multiplication result

    Hello!
    In same cases the result of multiplication in sql is rounded.For example, if i want to multiplay the numbers:
    SQL> select 38.69*0.335616438356164 from dual
    the result I get is: 12,985
    but it should be: 12,98499999999364
    Does anybody know where's the problem? Thanks.
    I'm using Oracle 10.2.0.1
    Matthew

    SQL> set numwidth 10
    SQL> select 38.69*0.335616438356164 from dual
      2  /
    38.69*0.335616438356164
                     12,985
    1 rij is geselecteerd.
    SQL> set numwidth 38
    SQL> select 38.69*0.335616438356164 from dual
      2  /
                   38.69*0.335616438356164
                      12,98499999999998516
    1 rij is geselecteerd.Regards,
    Rob.

  • Content Search Web Part displaying wrong Results for anonymous Users.

    HI Forum Group,
    I am getting Wrong results for my content search web part. The requirement is to show the News Description for the selected news item.
    I have a catalog site which stores News like 
    News1
    News2
    News3
    as Items. and i have connected this catalog in publishing site which is anonymous. In the publishing site created one page "News.aspx"added search results webpart which shows all the news item. Added one page "Description.aspx" to show
    description to show the selected news item.
    When ever user selects any news from news.aspx page it will redirected to description.aspx with the selected item ID
    The "Description.aspx" the search results page gets the data based on the URL by QueryString parameter as shown below
    The problem is, if i multiple items to open in tabs all the items are showing the data same as the first selected item, though the article ID is different.
    Thanks
    Sithender

    Hi,
    Thank you for your feedback on how you were successful in resolving this issue.
    Your solution will benefit many other users, and we really value having you as a Microsoft customer.
    Have a nice day!
    Best Regards,
    Lisa Chen
    TechNet Community Support
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected]

  • 0CRM_OPPT_H  (Transaction RSA3 gives wrong result)

    Hi gurus,
    <b>0CRM_OPPT_H  (Transaction RSA3 gives wrong result)
    BBPCRM 4.0
    BW 3.50 version</b>
    I had enhanced the structure "crmt_bw_oppt_h"
    and also written a BADI to populate Opportunity header status.
    But when I run extract checker RSA3 for CRM data,
    I get wrong number of records.
    I am having 95 records for Opportunities header data.
    Data Records / Call = "100"
    Display Extr. Calls = "10"
    Above settings, I am retrieving only 61 records.
    <b>Data Records / Call = "1"
    Display Extr. Calls = "200"
    For the above settings in RSA3,
    I am able to retrieve 95 records correctly.</b>
    The problem is that in RSA1 transaction of BW 3.50 server also,
    61 records are being loaded from CRM server.
    <b>Could this be a Cache memory problem,
    Are any of my BASIS settings a cause for this problem?</b>
    Any help is really appreciated and will be rewarded.
    Thanks,
    Aby Jacob
    ========

    Dear Friends,
    <b>I had to do a small correction in my BADI code.
    I got a solution from Online SAP HELP portal.</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cf4940e11d295df0000e82de14a/frameset.htm
    Notes on BADI Usage
    ====================
    The instance generated through the factory method should be declared
    as globally as possible or generally be passed as a parameter
    to ensure that the initialization process must be run as rarely as possible
    – just once would be best. In no case should you discard the instance as soon as
    it is generated or repeatedly run the initialization process in a loop.
    Within the adapter class interface,
    required database accesses are buffered locally,
    so that each access is executed once only.
    However, repeated initialization makes
    the buffer useless and dramatically reduces performance.
    Due to the local buffering, you can call Business-Add-In methods
    without having to expect considerable performance restrictions,
    even if no active implementations exist.
    Also, if the definition of the Business-Add-In is filter-dependent,
    a single instance is sufficient.
    However, you should not do without initialization altogether.
    Even if you could call static methods of the implementing
    class of the Business-Add-In implementation without an instance,
    you would lose the benefit of performance improvement through
    the Business-Add-Ins and the possibility of multiple use.
    If you switch the method type in the interface from the static method
    to the instance method at any time in the future,
    many code adjustments are required.
    In addition, you can no longer use default code that is provided.
    <b>Many Thanks to ROBIN
    and the whole SDN team</b>
    Aby Jacob ,,,,,

  • Wrong results after upgrading 10g database to 11.2.0.2.6

    Hi,
    Do anyone know, why the following query results are different?
    Not Working query:
    sql1:
    select col1 from tab1
    where col1 = (select '123' from dual)
    Working query:
    sql2:
    select col1 from tab1
    where col1 = '123';
    Both the sql1 and sql2 are returning same reseults in 10g database , but not in 11g.

    Pl post OS details along with sample outputs and explain plans from the the sql1 statement from the two databases. These MOS Docs may help also
    Things to Consider Before Upgrading to 11.2.0.2 to Avoid Poor Performance or Wrong Results [ID 1320966.1]
    Wrong Results on 11.2.0.2 with Function-Based Index and OR Expansion [ID 1264550.1]
    Wrong Results/No Rows for Sql Involving Functions in 11.2.0.2. [ID 1380679.1]
    HTH
    Srini

  • NOT IN operator giving the wrong results

    DB version:10gR2
    Why is NOT IN giving the wrong results. Isn't NOT EXISTS operator a flawless alternative to NOT IN?
    create table my_table1 (col1 number);
    insert into my_table1 values (1);
    insert into my_table1 values (2);
    commit;
    create table my_table2 ( col1 number);
    insert into my_table2 values (1);
    commit;
    select * from my_Table1;
           COL1
              1
              2
    select * from my_table2;
           COL2
              1
      --correct result
      SELECT * FROM my_table1 t1 WHERE NOT EXISTS
    (SELECT * FROM my_table2 t2 WHERE t1.col1 = t2.col1)
           COL1
              2
    ---correct result using IN
    SELECT * FROM my_table1 t1 where col1 not in (select col1 FROM my_table2 t2);
           COL1
              2
    Inserting a NULL to my_Table2
    Now the query using NOT IN is returning wrong results.
    insert into my_table2 values (null);
    commit;
    SELECT * FROM my_table1 t1 where col1 not in (select col1 FROM my_table2 t2);
    no rows selected
    Query using NOT EXISTS is still giving the right results.
    SELECT * FROM my_table1 t1 WHERE NOT EXISTS
       (SELECT * FROM my_table2 t2 WHERE t1.col1 = t2.col1);
           COL1
              2

    ScottsTiger wrote:
    can i use NOT EXISTS(with a proper Co-related subquery) as a safe alternative to NOT IN?Depends on your data and what you need to achieve.
    Personally I avoid using NOT EXISTS or NOT IN if I can really help it.
    My preferred method is to outer join the tables together and then remove any resultant rows where a value exists and I didn't want one. ;)

  • Wrong results for context search on empty element tags

    I'm using Oracle DBMS 11.1 and 11.2 and created a context index on an XML column (section group: PATH_SECTION_GROUP).
    When entering a query like
    SELECT count(*) FROM my_table t WHERE contains (t.co_xml,'hasPath(/tag1/tag2)') > 0
    I get wrong results if tag2 is an empty element tag (<tag2/>) that appears somewhere within the
    XML instance, but NOT directly under tag1.
    E.g., the following XML instance is found (but shouldn't!):
    <a>
    <tag1>bla<tag3>bla</tag3></tag1>
    <tag4>bla<tag2/></tag4>
    </a>
    This seems to happen only for empty element tags. Is this a known bug and does anybody know a workaround?
    Thanks in advance for your help!
    Roman

    I am unable to reproduce the problem. Can you provide a copy and paste of an actual run, including create table, insert data, create index, and select, as I have done below?
    SCOTT@orcl_11g> select * from v$version
      2  /
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE     11.1.0.6.0     Production
    TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production
    SCOTT@orcl_11g> create table my_table
      2    (co_xml     xmltype)
      3  /
    Table created.
    SCOTT@orcl_11g> insert into my_table values (
      2  xmltype ('<?xml version="1.0"?>
      3  <tag5>
      4    <tag1>bla<tag3>bla</tag3></tag1>
      5    <tag4>bla<tag2/></tag4>
      6  </tag5>'))
      7  /
    1 row created.
    SCOTT@orcl_11g> create index my_idx
      2  on my_table (co_xml)
      3  indextype is ctxsys.context
      4  parameters ('section group ctxsys.path_section_group')
      5  /
    Index created.
    SCOTT@orcl_11g> SELECT count(*)
      2  FROM   my_table t
      3  WHERE  contains (t.co_xml, 'hasPath (//tag1/tag2)') > 0
      4  /
      COUNT(*)
             0
    SCOTT@orcl_11g> SELECT count(*)
      2  FROM   my_table t
      3  WHERE  contains (t.co_xml, 'hasPath (//tag1/tag3)') > 0
      4  /
      COUNT(*)
             1
    SCOTT@orcl_11g>

  • Timestamp - wrong results during clock change

    When I run for example:
    SELECT TO_TIMESTAMP('28.03.2010 02:00:00','DD.MM.YYYY HH24:MI:SS') FROM dual
    on worksheet, I receive two different results:
    Script Output:
    28.03.2010 02:00:00
    Query Result:
    28.03.2010 03:00:00
    What is the reason for the wrong result in "Query Result"?
    Rainer

    Things that might influence, but could be different for you:
    - WinXP SP3 Catalonia/Spain locale (adjusts to summer-time)
    - AddVMOption -Duser.language=en
    - AddVMOption -Doracle.jdbc.mapDateToTimestamp=false
    - sqldev NLS Language/Territory: American/America
    Hope that helps,
    K.

  • Wrong result in Web Intelligence Report

    Post Author: shriram81
    CA Forum: WebIntelligence Reporting
    When I run a query for web inteeligence documnet I receive a wrong result. But when I run the same SQL query in SQL analyzer of MS SQL server I get correct result.
    e.g. I get the same value of measure object against different dimension in web inteeligence report but I get correct values of measure when I run the query in query analyzer on SQl server
    Pl guide me to get correct result in Webi

    Post Author: GregPye
    CA Forum: WebIntelligence Reporting
    Are you copying and pasting the query from WebI into SQL Server? Seems a bit odd, as the SQL should be sent to SQL Server to run...
    I would check the report level settings, such as filters, or what have you... also check that there aren't more than one SQL query being run in WebI that you haven't noticed...
    Cheers

  • Query giving wrong results

    Below is the query thats giving me wrong results ...can anyone help me figure where i am going wrong :(
    SQL> select count(*) from t where source='LP1.1';
      COUNT(*)
            69
    SQL> select count(*) from tblspring where line_a='LP1.1';
      COUNT(*)
           233now when i join these two table ...the total counts exceeds the expected records that i want
    SQL> select count(*) from t , tblspring where t.source=tblspring.line_a and t.source='LP1.1';
      COUNT(*)
         16077

    the thing is i want to filter only those records from table t where the column named  - source is equal to the column named line_a from table tblspring from the query in table t i get 69 records ....
    now when i match the it table tblspring with the condition
    i want the number of records should be less than or equal to 69 but not more than 69
    Edited by: Suhail Faraaz on Mar 5, 2011 7:31 AM

  • Bug 2679062 - Wrong results possible from multi-column INLIST - though stat

    Hi,
    The following test case is supplied in the metalink in bug no. 2871341, the base bug for this bug is 2679062.
    REPRODUCIBILITY:
    Reproduces constantly with simple test case below:
    TEST CASE:
    DROP TABLE A1
    CREATE TABLE A1 (X1 VARCHAR2(10), X2 VARCHAR2(10))
    REM *********** Create the second table: ***************
    DROP TABLE A2
    CREATE TABLE A2 (X1 VARCHAR2(10), X2 VARCHAR2(10))
    INSERT INTO A1 VALUES ('1','2');
    INSERT INTO A2 VALUES ('3','4');
    COMMIT;
    CREATE INDEX A1_X1 ON A1(X1 );
    CREATE INDEX A1_X2 ON A1(X2);
    CREATE INDEX A2_X1 ON A2(X1);
    CREATE INDEX A2_X2 ON A2(X2);
    CREATE OR REPLACE VIEW A_ALL AS SELECT * FROM A1 UNION ALL SELECT * FROM A2;
    ANALYZE TABLE A1 COMPUTE STATISTICS;
    ANALYZE TABLE A2 COMPUTE STATISTICS;
    SELECT * FROM A_ALL;
    SELECT * FROM A_ALL WHERE (X1='1' AND X2='2') ;
    SELECT * FROM A_ALL WHERE ((X1='1' AND X2='2') OR (X1='3' AND X2='4'));
    The 2nd query returns answer while the second is not !
    The following is published in the 9.2.0.4 fixed bug list:
    " 9204 - 2679062 - Wrong results possible from multi-column INLIST "
    I have installed 9.2.0.4 patch set on a win 2000 machine Oracle and saw that the above case is actually solved but our application which has a very similar case doesn't.
    After investigating I found the following test case that fails, it reproduces only when you have index on all columns (covering index):
    drop table t1_1;
    drop table t1_2;
    create table t1_1(c1 number, c2 number, c3 number);
    create table t1_2(c1 number, c2 number, c3 number);
    create index t1_1_ix on t1_1(c1, c2, c3);
    create index t1_2_ix on t1_2(c1, c2, c3);
    create or replace view t1 as select * from t1_1 union all select * from t1_2;
    insert into t1_1 values(1, 2, 100);
    insert into t1_2 values(1, 2, 200);
    commit;
    analyze table t1_1 compute statistics;
    analyze table t1_2 compute statistics;
    prompt
    prompt #######################################
    prompt try 1 - works fine
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    ( (c2=2) and (c3=100)
    prompt
    prompt #######################################
    prompt try 2 - works fine
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    (c2=2) and (c3=200)
    prompt
    prompt #######################################
    prompt try 3 - try 1 OR try 2 does not work !
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    ( ( (c2=2) and (c3=100) )
    or
    ( (c2=2) and (c3=200) )
    opened a TAR and wanted to share with you.
    Tal Olier ([email protected]).

    Hi,
    The following test case is supplied in the metalink in bug no. 2871341, the base bug for this bug is 2679062.
    REPRODUCIBILITY:
    Reproduces constantly with simple test case below:
    TEST CASE:
    DROP TABLE A1
    CREATE TABLE A1 (X1 VARCHAR2(10), X2 VARCHAR2(10))
    REM *********** Create the second table: ***************
    DROP TABLE A2
    CREATE TABLE A2 (X1 VARCHAR2(10), X2 VARCHAR2(10))
    INSERT INTO A1 VALUES ('1','2');
    INSERT INTO A2 VALUES ('3','4');
    COMMIT;
    CREATE INDEX A1_X1 ON A1(X1 );
    CREATE INDEX A1_X2 ON A1(X2);
    CREATE INDEX A2_X1 ON A2(X1);
    CREATE INDEX A2_X2 ON A2(X2);
    CREATE OR REPLACE VIEW A_ALL AS SELECT * FROM A1 UNION ALL SELECT * FROM A2;
    ANALYZE TABLE A1 COMPUTE STATISTICS;
    ANALYZE TABLE A2 COMPUTE STATISTICS;
    SELECT * FROM A_ALL;
    SELECT * FROM A_ALL WHERE (X1='1' AND X2='2') ;
    SELECT * FROM A_ALL WHERE ((X1='1' AND X2='2') OR (X1='3' AND X2='4'));
    The 2nd query returns answer while the second is not !
    The following is published in the 9.2.0.4 fixed bug list:
    " 9204 - 2679062 - Wrong results possible from multi-column INLIST "
    I have installed 9.2.0.4 patch set on a win 2000 machine Oracle and saw that the above case is actually solved but our application which has a very similar case doesn't.
    After investigating I found the following test case that fails, it reproduces only when you have index on all columns (covering index):
    drop table t1_1;
    drop table t1_2;
    create table t1_1(c1 number, c2 number, c3 number);
    create table t1_2(c1 number, c2 number, c3 number);
    create index t1_1_ix on t1_1(c1, c2, c3);
    create index t1_2_ix on t1_2(c1, c2, c3);
    create or replace view t1 as select * from t1_1 union all select * from t1_2;
    insert into t1_1 values(1, 2, 100);
    insert into t1_2 values(1, 2, 200);
    commit;
    analyze table t1_1 compute statistics;
    analyze table t1_2 compute statistics;
    prompt
    prompt #######################################
    prompt try 1 - works fine
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    ( (c2=2) and (c3=100)
    prompt
    prompt #######################################
    prompt try 2 - works fine
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    (c2=2) and (c3=200)
    prompt
    prompt #######################################
    prompt try 3 - try 1 OR try 2 does not work !
    prompt #######################################
    prompt
    select * from t1
    where
    (c1=1)
    and
    ( ( (c2=2) and (c3=100) )
    or
    ( (c2=2) and (c3=200) )
    opened a TAR and wanted to share with you.
    Tal Olier ([email protected]).

  • [HELP] AGO function return wrong result

    Hi, i try to implement ago function in OBIEE, but the result is not as expected. Please help me to configure Time Dimension to get this work.
    My case:
    - I have a time dimension with this configuration:
    [http://i264.photobucket.com/albums/ii176/necrombi/NEO/1-1.png]
    Time Hierarchy: Total > Year > Quarter > Month > Day
    Year:
    Primary key: Calendar_year_cal_year_code
    Chronological key: Does not define
    Quarter:
    Primary key: Calendar_quarter_description
    Chronological key: Does not define
    Month:
    Primary key: Calendar_month_description
    Chronological key: Calendar_month_description
    Day:
    Primary key: Dimension_key
    Chronological key: Day_day_code
    My ago function: AGO(expression, mywh.D_qn_thoigianDim."month", 1)
    I do not understand why i get this wrong results:
    [http://i264.photobucket.com/albums/ii176/necrombi/NEO/2.png]
    Does anyone know how to solve this?
    Edited by: 864451 on Jun 8, 2011 5:11 AM

    Hi, thanks for your reply.
    I implemented Time dimension with your recommend, and have time dimension like this:
    Time Hierarchy: Total > Year > Quarter > Month > Day
    Year:
    Primary key: Calendar_year_start_date
    Chronological key: Calendar_year_start_date
    Quarter:
    Primary key: Calendar_quarter_start_date
    Chronological key: Calendar_quarter_start_date
    Month:
    Primary key: Calendar_month_start_date
    Chronological key: Calendar_month_start_date
    Day:
    Primary key: Day
    Chronological key: Dimension_key
    And Ago function works fine with month level: AGO(expression, mywh.D_qn_thoigianDim."month", n)
    But return sum result of 12 month with: AGO(expression, mywh.D_qn_thoigianDim."year", 1)
    In my case, i just use AGO(expression, mywh.D_qn_thoigianDim."month", 12) to get year ago value. But i still don't understand clearly about OBIEE Time Serries functions.
    Thanks,
    Dung Nguyen

  • How to clear last payroll result of multiple workers?

    Experts,
    My requirement is to delete the last payroll result of multiple employees.
    PU01 allows to delete for only one employee at a time.
    I tried to create a BDC but not working. Is there any other alternative to do so.
    Regards.

    here it is:
    loop at pa_pernr.
      PERFORM bdc_dynpro     USING 'RPCDPU01'   '1000'.
      PERFORM bdc_field          USING 'BDC_CURSOR' 'RP50G-PERNR'.
      PERFORM bdc_field          USING 'BDC_OKCODE' '=STAR'.
      PERFORM bdc_field          USING 'RP50G-PERNR' pa_pernr-low.
      PERFORM bdc_dynpro     USING 'SAPLSLVC_FULLSCREEN' '0500'.
      PERFORM bdc_field          USING 'BDC_OKCODE' '=DELE'.
      PERFORM bdc_dynpro     USING 'SAPLSPO1'   '0300'.
      PERFORM bdc_field          USING 'BDC_OKCODE' '=YES'.
      CALL TRANSACTION  'PU01' USING bdcdata MODE 'A' UPDATE 'S'.
    endloop.
    " pa_pernr-low contains the employed id number.

Maybe you are looking for