ボールドテキスト### 前提・実現し文字列⇒数字変換時におけるマイナス1以上0未満の数値変換たいこと
引数(+/-、小数点以下、含む)で渡された値を3桁カンマ区切りにし、数字変換する処理を作成したい。
発生している問題・エラーメッセージ
引数で渡された値を整数部分・小数部分に分割し、カンマ区切りした整数を小数部分と結合して
戻り値としている。この時、引数が-1<引数<0(例:-0.1)の場合、整数部分が-0となり、
Number関数を使って数値変換すると0になってしまう。
(結合の後に、0以下の値(0.2)に対し、-1(マイナス1)を掛け、数値変換しても-0.2には変換されない)
該当のソースコード
Javascript
1 addFigure:function(numVal) { 2 // 空の場合そのまま返却 3 if (numVal == ''){ 4 return ''; 5 } 6 // 全角から半角へ変換し、カンマ&数字以外が入力されていたら事前に削除 7 var numVal_HalfWidth = this.toHalfWidth(numVal).replace(/,/g, "").trim(); 8 9 // 整数部分と小数部分に分割 10 var numData = numVal_HalfWidth.toString().split('.'); 11 // 整数部分が-0だった場合 12 if (Object.is(numData[0], '-0')) { 13 14 numData[0] = Number(numData[0]); 15 // 小数部分と結合して返却 16 return numData.join('.'); 17 } 18 else{ 19 // 整数部分を3桁カンマ区切りへ 20 numData[0] = Number(numData[0]).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); 21 // 小数部分と結合して返却 22 return numData.join('.'); 23 } 24 25 }, 26 27 /** 28 * 全角から半角への変革関数 29 * 入力値の英数記号を半角変換して返却 30 * [引数] strVal: 入力値 31 * [返却値] String(): 半角変換された文字列 32 */ 33 toHalfWidth:function(strVal){ 34 // 半角変換 35 var halfVal = strVal.replace(/[!-~]/g, 36 function( tmpStr ) { 37 // 文字コードをシフト 38 return String.fromCharCode( tmpStr.charCodeAt(0) - 0xFEE0 ); 39 } 40 ); 41 return halfVal; 42 }, 43
試したこと
Number関数以外(parse関数など)の数値変換
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/17 06:07