忍者ブログ

からすまる日誌 JavaScript

前提(11) コンピュータは小数が苦手

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

前提(11) コンピュータは小数が苦手

コンピューターは小数が苦手というお話
 
var total;
//餃子3人分の料金
total = 220*3; //餃子分
total += 20; //箱代を足す
console.log('total = '+total);
//税込み価格
total = total * (1 + 0.1);
console.log('total = '+total);

0.1を計算できないので、この結果が
total = 748.0000000000001
になってしまう
 

浮動小数点数(ふどうしょうすうてんすう)
という型を宣言すれば回避できるらしい。
 

四捨五入時も注意。
 
excelにround関数というのがある(四捨五入するやつ)
丸めるという意味。
 
この四捨五入は日本標準 2.5 → 3
世界標準だと「偶数丸め」2.5 → 2
どまんなかの.5だけ、欧米では偶数に所属しろという感じ。
3.5 → 4
 
→プログラム言語によって、このどっちを採用しているかが異なるので、いわゆる「四捨五入」にならずに「偶数丸め」になることもある
 

なので四捨五入の関数を自作して自分で組み込む人もいるらしい。
安全のため。
 
小数はコンピューターで要注意というお話。
 

parseInt()
パースイント
計算結果は整数型でください。(変な小数部分があったら切り捨てられる)
 
もともとJavaScriptにはデータ型がオートキャストなので、確実にデータ型を強制したい場合は、こうやって関数で挟む。JavaScriptではよく使うらしい。
 
total = parseInt(total * (1 + 0.1));
 
数字かどうかよくわからない変数(ユーザーが書いた文字などは、原則、文字として扱われたりする)も、これで囲っておいて数値型にすることもできるらしい。
  
//parseIntの実験
frult = "123a";
frult = parseInt(frult);
console.log('frult = '+frult);
 
//出力結果 frult = 123
 

window.alert('文字列');
window.confirm('文字列');
window.prompt('文字列');
 
window.prompt()
ウィンドウプロンプト 
ユーザーに問いかけ、その戻り値が戻ってくる
 

ユーザーに餃子何人前注文するのか問うて、
そのあと餃子代を計算して出しましょう。
 
画面でユーザーが入力するのは文字変数になる
→整数化するparseIntをかける
 
変数の宣言時にじゃあ整数ですよとやっておきたい気もするが、
なんとJavaScriptは先に述べたオートキャストであるためそういうのがない!
(他言語にはあるらしい)
 

バリデーション
データがバリかそうじゃないかというのを確認しないといけないとか。
 
>「バリデーション」とは、 「検証、実証、認可、妥当性」の意味を持ち、「validation」と表記される英単語になります。
  
本来は受け取った値をそのまま信用してはいけない。受け取った値が数値かどうか、異常な数値じゃないかどうか、それによって挙動を変えないといけない。
 
>バリデーションとは、入力されたデータが、あるいはプログラミング言語やマークアップ言語の記述が、規定された文法に即して、または要求された仕様にそって、適切に記述されているかどうかを検証することである。
多くの場合、プログラミング言語においてフォームなどに入力された文字列が入力規則に対して妥当に記述されているかどうかを検証する仕組みを指す。記述が妥当でない場合はエラーとして値を返すように設定される。
 
test2--->
 
var total;
var kosu;
 
kosu = window.prompt('餃子は何人前ですか?');
 
//餃子の料金
total = 220 * kosu; //餃子分
total += 20; //箱代を足す
console.log('total = '+total);
//税込み価格
total = parseInt(total * (1 + 0.1));
console.log('total = '+total);
 

windowのオブジェクトだけは最上位のオブジェクトなので省略可能。
 
var name = window.prompt('名前を入力してください');
var name = prompt('名前を入力してください');
 
でよい。
 

>alert()メソッドを使っていると、ついついカスタマイズをしたくなるのではないでしょうか?よくある質問として以下のようなものがあります。
ポップアップメッセージに表示されるアイコンはどうすれば変更できますか?
ポップアップのタイトルテキストはどうすれば変更できますか?
ボタンのテキストはどうすれば変更できますか?
 
結論から申しますと、これらのカスタマイズはすべて出来ません!なぜなら、alert()メソッドはあくまでも特定の値(メッセージ)をユーザーに確認してもらう用途に特化しているからです。
 
もし、それでも自由にカスタマイズしたい!と考えるならばHTML、CSS、JavaScriptで独自にダイアログを作成する必要があります。このような独自のカスタマイズ方法については、次の記事でゼロから作る方法を詳しく解説しているのでぜひ参考にしてみてください!
 
https://www.sejuku.net/blog/29821
 
 
---test3.js
  
var message = 'こんにちは';
var name = window.prompt('名前を入力してください');
alert(message + name +'さん');
 
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R