mySQL получает неожиданный результат за 0,99 раза 5 [дублировать]

Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.

Например:

string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)

if (testString.Length == 0) // Throws a nullreferenceexception
{
    //Do something
} 

Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.

По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит

Дополнительная информация находится в C # NullReferenceException и Null Parameter .

529
задан drudge 26 May 2011 в 18:13
поделиться

22 ответа

Это отлично работает в FF4:

parseFloat(Math.round(num3 * 100) / 100).toFixed(2);

Live Demo

var num1 = "1";
document.getElementById('num1').innerHTML = parseFloat(Math.round(num1 * 100) / 100).toFixed(2);

var num2 = "1.341";
document.getElementById('num2').innerHTML = parseFloat(Math.round(num2 * 100) / 100).toFixed(2);

var num3 = "1.345";
document.getElementById('num3').innerHTML = parseFloat(Math.round(num3 * 100) / 100).toFixed(2);
span {
    border: 1px solid #000;
    margin: 5px;
    padding: 5px;
}
<span id="num1"></span>
<span id="num2"></span>
<span id="num3"></span>

Обратите внимание, что он будет округлен до 2 знаков после запятой, поэтому вход 1.346 вернет 1.35.

779
ответ дан Donald Duck 26 August 2018 в 12:44
поделиться
var quantity = 12;

var import1 = 12.55;

var total = quantity * import1;

var answer = parseFloat(total).toFixed(2);

document.write(answer);
1
ответ дан Allan Pereira 26 August 2018 в 12:44
поделиться
function currencyFormat (num) {
    return "$" + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
}

console.info(currencyFormat(2665));   // $2,665.00
console.info(currencyFormat(102665)); // $102,665.00
2
ответ дан Ar No 26 August 2018 в 12:44
поделиться

Преобразуйте число в строку, сохраняя только два десятичных знака:

var num = 5.56789;
var n = num.toFixed(2);

Результат n будет:

5.57
4
ответ дан Behnam Mohammadi 26 August 2018 в 12:44
поделиться

Расширить объект Math с помощью метода точности

Object.defineProperty(Math, 'precision',{
   value: function (value,precision,type){
             var v = parseFloat(value),
                 p = Math.max(precision,0)||0,
                 t = type||'round';
              return (Math[t](v*Math.pow(10,p))/Math.pow(10,p)).toFixed(p);
          }
    });

console.log(
    Math.precision(3.1,3), // round 3 digits 
    Math.precision(0.12345,2,'ceil'), // ceil 2 digits
    Math.precision(1.1) // integer part
)

0
ответ дан bortunac 26 August 2018 в 12:44
поделиться

Для наиболее точного округления создайте эту функцию:

function round(value, decimals) {
    return Number(Math.round(value +'e'+ decimals) +'e-'+ decimals).toFixed(decimals);
}

и используйте ее для округления до двух знаков после запятой:

console.log("seeked to " + round(1.005, 2));
> 1.01

Благодаря Razu , эта статья и ссылка на Math.round MDN .

8
ответ дан Community 26 August 2018 в 12:44
поделиться
(num + "").replace(/^([0-9]*)(\.[0-9]{1,2})?.*$/,"$1$2")
-2
ответ дан Crow Soup 26 August 2018 в 12:44
поделиться

Это вы имеете в виду?

function showAsFloat(num, n){
      return !isNaN(+num) ? (+num).toFixed(n || 2) : num;
}

document.querySelector('#result').textContent = 
    [
     'command                      | result',
     '-----------------------------------------------',
     'showAsFloat(1);              | ' + showAsFloat(1),
     'showAsFloat(1.314);          | ' + showAsFloat(1.314),
     'showAsFloat(\'notanumber\')    | ' + showAsFloat('notanumber'),
     'showAsFloat(\'23.44567\', 3)   | ' + showAsFloat('23.44567', 3),
     'showAsFloat(2456198, 5)      | ' + showAsFloat('2456198', 5),
     'showAsFloat(0);              | ' + showAsFloat(0)
    ].join('\n');
<pre id="result"></pre>

7
ответ дан KooiInc 26 August 2018 в 12:44
поделиться

function number_format(string,decimals=2,decimal=',',thousands='.',pre='R$ ',pos=' Reais'){
  var numbers = string.toString().match(/\d+/g).join([]);
  numbers = numbers.padStart(decimals+1, "0");
  var splitNumbers = numbers.split("").reverse();
  var mask = '';
  splitNumbers.forEach(function(d,i){
    if (i == decimals) { mask = decimal + mask; }
    if (i>(decimals+1) && ((i-2)%(decimals+1))==0) { mask = thousands + mask; }
    mask = d + mask;
  });
  return pre + mask + pos;
}
var element = document.getElementById("format");
var money= number_format("10987654321",2,',','.');
element.innerHTML = money;
#format{
display:inline-block;
padding:10px;
border:1px solid #ddd;
background:#f5f5f5;
}
<div id='format'>Test 123456789</div>

2
ответ дан Leonardo Filipe 26 August 2018 в 12:44
поделиться

Вот как я решаю свою проблему:

parseFloat(parseFloat(floatString).toFixed(2));
-2
ответ дан Liam 26 August 2018 в 12:44
поделиться

Самый простой ответ:

var num = 1.2353453;
num.toFixed(2); // 1.24

Пример: http://jsfiddle.net/E2XU7/

11
ответ дан macio.Jun 26 August 2018 в 12:44
поделиться

Вот также общая функция, которая может форматировать любое количество знаков после запятой:

function numberFormat(val, decimalPlaces) {

    var multiplier = Math.pow(10, decimalPlaces);
    return (Math.round(val * multiplier) / multiplier).toFixed(decimalPlaces);
}
3
ответ дан Minas Mina 26 August 2018 в 12:44
поделиться

Вы не даете нам всей картины.

javascript:alert(parseFloat(1).toFixed(2)) показывает 1,00 в моих браузерах, когда я вставляю его в строку местоположения. Однако, если после этого вы что-то сделаете, он вернется.

var num = 2
document.getElementById('spanId').innerHTML=(parseFloat(num).toFixed(2)-1)


shows 1 and not 1.00
1
ответ дан mplungjan 26 August 2018 в 12:44
поделиться

Гораздо более общее решение для округления до N мест

function roundN(num,n){
  return parseFloat(Math.round(num * Math.pow(10, n)) /Math.pow(10,n)).toFixed(n);
}


console.log(roundN(1,2))
console.log(roundN(1.34,2))
console.log(roundN(1.35,2))
console.log(roundN(1.344,2))
console.log(roundN(1.345,2))
console.log(roundN(1.344,3))
console.log(roundN(1.345,3))
console.log(roundN(1.3444,3))
console.log(roundN(1.3455,3))

Output

1.00
1.34
1.35
1.34
1.35
1.344
1.345
1.344
1.346
10
ответ дан PirateApp 26 August 2018 в 12:44
поделиться

Если требуется конкретное форматирование, вы должны написать свою собственную процедуру или использовать библиотечную функцию, которая делает то, что вам нужно. Основная функциональность ECMAScript обычно недостаточна для отображения отформатированных чисел.

Подробное объяснение округления и форматирования находится здесь: http://www.merlyn.demon.co.uk/js-round. htm # RiJ

Как правило, округление и форматирование должны быть определены только как последний шаг перед выходом. Выполнение этого ранее может привести к неожиданно большим ошибкам и уничтожению форматирования.

3
ответ дан RobG 26 August 2018 в 12:44
поделиться

Если вы уже используете jQuery, вы можете посмотреть, как использовать плагин jQuery Number Format .

Плагин может возвращать отформатированные числа в виде строки, вы можете установить десятичную , и разделители тысяч, и вы можете выбрать количество десятичных знаков для отображения.

$.number( 123, 2 ); // Returns '123.00'

Вы также можете получить формат номера jQuery из GitHub .

7
ответ дан Sam Sehnert 26 August 2018 в 12:44
поделиться

Вы ищете пол?

var num = 1.42482;
var num2 = 1;
var fnum = Math.floor(num).toFixed(2);
var fnum2 = Math.floor(num2).toFixed(2);
alert(fnum + " and " + fnum2); //both values will be 1.00
3
ответ дан samwise 26 August 2018 в 12:44
поделиться
var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120
15
ответ дан Tiberiu Petcu 26 August 2018 в 12:44
поделиться
Number(1).toFixed(2);         // 1.00
Number(1.341).toFixed(2);     // 1.34
Number(1.345).toFixed(2);     // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
199
ответ дан Timmmm 26 August 2018 в 12:44
поделиться

Этот ответ потерпит неудачу, если value = 1.005.

В качестве лучшего решения проблему округления можно избежать, используя числа, представленные в экспоненциальном обозначении:

Number(Math.round(1.005+'e2')+'e-2').toFixed(2); // 1.01

Кредит: Деление на округление в JavaScript

66
ответ дан Tshepang 26 August 2018 в 12:44
поделиться

Мне нравится:

var num = 12.749;
parseFloat((Math.round(num * 100) / 100).toFixed(2)); // 123.75

Закруглить число с двумя десятичными точками, затем обязательно проанализируйте его с помощью parseFloat(), чтобы вернуть Number, а не String, если вам все равно, Строка или число.

0
ответ дан Yuichi 26 August 2018 в 12:44
поделиться
var number = 123456.789;


console.log(new Intl.NumberFormat('en-IN', { maximumFractionDigits: 2 }).format(number));

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat

7
ответ дан zloctb 26 August 2018 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: