• 締切済み

文字コードと小数変換

初歩的な質問かもしれませんが2つほどお願いします。 1.jsファイルの文字コード htmlファイルではheadにシフトJIS指定で記述したのですがjsファイルでは何も指定せずに(指定できるのでしょうか?) 保存したらjsファイルの読み込み時に文字化けしてしまいました。 どちらもWindowsのメモ帳で作成保存したのですがjsファイルの文字コードはどうなるのでしょうか? htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。 2.小数変換 小数第何位を四捨五入と指定できる関数というのはあるのでしょうか? Math.floorやMath.ceilでは整数値になってしまいます。 10^nで割ってから計算し直さないといけないのでしょうか?

みんなの回答

noname#140971
noname#140971
回答No.8

昨晩は酒を飲みながら訳の判らない回答をしていたようです。 まあ、次のような関数を考えていたということです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>Round</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript"> function rounds(m, t) {   return sgn(m)*Math.floor(Math.abs(m)*Math.pow(10,t-1)+0.5)/Math.pow(10,t-1); } function sgn(m) {   return (m < 0) ? -1 : 1; } </script> <body> <script> <!-- document.write (rounds(-1.45, 2), "</br>"); //--> </script> </body> </html>

oxfax
質問者

お礼

この時期はお酒が入るのは仕方ありませんね(笑 いろいろなプログラムを載せていただき勉強になります。 ありがとうございます。

noname#140971
noname#140971
回答No.7

まあ、それよりも、バグを心配しています。 つまり、正と負の値の問題です。 -1.124 の場合、1.124 にして四捨五入。 その後、負なら-1を掛けないと・・・。 今、自宅で酒飲みながらで試せません。 しかし、通常は、四捨五入関数は作りますよね。 Math.sgn なんてありましたかね・・・。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.6

>No.4の方 無粋なツッコミなので気に障ったらスルーしていただきたいのですが、 指数を指定するのであれば function rounds(m, t) {  return Math.round(m*Math.pow(10,t-1))/Math.pow(10,t-1); } とした方が「小数点第何位で四捨五入」というのが分かりやすいかなぁと。 まぁそういう意味では引数がマイナスで小数点以下、正数の場合は上何桁目で四捨五入としたほうが可読性は高まりますけどこの辺は質問者様に努力していただくという方向でどうかよろしく。 ヒントとしてはtを正負逆にすることです。 それでは皆様よい年末を。

oxfax
質問者

お礼

プログラムまでわざわざありがとうございます! 今回は負のエラーなどを気にするプログラムではないので この方法で試してみたいと思います。

noname#140971
noname#140971
回答No.5

var v=0; は、ゴミ!

noname#140971
noname#140971
回答No.4

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>Round</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript"> var v=0; function rounds(m, t) {   return Math.round(m*Math.pow(10,t))/Math.pow(10,t); } </script> <body> <script> <!--   document.write (rounds(1.154, 2), "</br>"); //--> </script> </body> </html> document.write (rounds(1.154, 0), "</br>");---->1 document.write (rounds(1.154, 1), "</br>");---->1.2 document.write (rounds(1.154, 2), "</br>");---->1.15 ここまではテストしました。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

日本語おかしかったので自己ツッコミ >四捨五入は組み込まれていません。 小数点以下の四捨五入は(snip) ついでにソースでも。 var nn = 1.2345 nn_tmp = nn * 100; nn = Math.round(nn_tmp) / 100; // nn -> 1.23

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

>htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。 文字コードとフォントに関係はありません。 フォントが変わるのがイヤなのであればcssなどで明示的に指定すればよいです。 文字化けに関しては原因は別のところにある気がします。 <meta>やjsの読み込み部に間違いがないか確認するとよいかもしれません。 >10^nで割ってから計算し直さないといけないのでしょうか? そのとおり。四捨五入は組み込まれていません。 ロジックは自分で組むほかありません。 たかだか3ロジックくらいなのでそんなに手間ではないですよ。

noname#172317
noname#172317
回答No.1

>jsファイルの文字コード win・メモ帳は、文字コードが設定出来ません。 例えば、秀丸などのエディタでは、保存する際に エンコードの種類、改行コードの指定まで出来ます。 秀丸はシェアウェアですが、フリーでもいろいろありますので 検索してみてはいかがでしょうか? >2.小数変換. Math.round ← これだと四捨五入してくれます

参考URL:
http://www.tohoho-web.com/js/math.htm#just
oxfax
質問者

お礼

やはりメモ帳ではムリですか~ Windowsのメモ帳は自動でシフトJISでのみ保存されると聞いたのですが jsファイルでは自動でEUCになってしまうということでしょうか?

関連するQ&A