2017-02-19 11 views
1

Привет Я пытаюсь написать программу с использованием Javascript/Java, чтобы получить частное (с десятичными значениями) и остаток, как показано в приведенном ниже вложении. Я использовал обычный оператор остатка (%), но не получал фактический остаток, как показано ниже. Может кто-то, пожалуйста, помогите мне, как это реализовать. enter image description hereМатематическая остаточная программа для десятичных значений с использованием Java/javascript

Ненулевая остаток:

enter image description here

В JavaScript я писал:

<script> 
var a = 17.0; 
var b = 5; 
var x = a % b; 
</script> 

Где, как в Java, когда я писал

import java.math.*; 
public class CalculateRemainder { 
public static void main(String[] args) { 
    float divider, remainder; 
    int dividend; 

    divider = 17.0f; 
    dividend = 5; 

    remainder = divider%(dividend); 

    String str = "The remainder is " + remainder; 
    System.out.println(str); 
    } 
} 

я получаю REMAINDER как «2.0» вместо «0», (как показано на рисунке). То же самое происходит с JavaScript.

+0

В Java это потому, что 'остаток 'является' float', и [это как 'float' напечатаны] (http://ideone.com/sT8PTw). –

+0

На самом деле я ищу Javascript. Но между Java и Javascipt ничего не получается. Если я получу правильное решение, это Java, я буду реализовывать его как «сервис» и вызывать его в Javascript. В идеале Javascript подходит для моего решения. – Sriks

+0

Если вы хотите это в Javascript, напишите свой код в Javascript. «Услуга» для этого просто сумасшедшая. –

ответ

0

Если вы хотите, оставшуюся после некоторой точностью, то используйте:

function remainder(dividend, divisor, precision = 4) { 
 
    var result = (dividend/divisor).toString(); 
 
    var dot = result.indexOf('.'); 
 
    if(dot == -1) return 0; // it was a perfect division (9/3 for example) 
 
    
 
    var remainder = "0." + result.substr(dot + precision); // get the part after the precision 
 
    return Math.round(remainder * divisor);     // multiply it by the divisor and round the result 
 
} 
 

 
console.log(remainder(9.1, 3, 3));

Примечание: Результат может быть различным для различных точностей.

+0

Wowww @ibrahim, это потрясающе. Вы спасли мой день. Большое вам спасибо за быстрое решение. :) – Sriks

+0

Это сложнее, чем вам необходимо. следует использовать решение, предложенное bormat в комментариях выше (т. е. если вы хотите остаток после трех знаков после запятой, просто умножьте свой дивиденд на 1000, выполните математику с использованием обычной целочисленной арифметики, а затем разделить результаты на 1000,0, чтобы получить ожидаемое значение с плавающей запятой). – DaoWen

+0

@ downvoter почему ??? –