数値演算

@@'数値演算のインターフェイスイメージ(@auto_convertがあると引数の型に自動変換される)'
can Number

  @@'正'@@auto_convert
  do Self.`+`@Number(value@Number)
    ?
  spec
    +1 = 1
    +0 = 0
    +1.1 = 1.1
    +'1' = 1
    +'0' = 0
    +'1.1' = 1.1
    +'a' = 0
  DO

  @@'負'@@auto_convert
  do Self.`-`@Number(value@Number)
    ?
  spec
    -1 = -1
    -0 = 0
    -1.1 = -1.1
    -'1' = -1
    -'0' = 0
    -'1.1' = -1.1
    -'a' = 0
  DO

  @@'加算'@@auto_convert
  do Self.`+`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    1 + 2 = 3
    '1' + 2 = 3
    1 + '2' = 3
    '1' + '2' = 3
    1 + 2.2 = 3.2
    1.2 + 2 = 3.2
    1.1 + 2.1 = 3.2
    -10 + 1 = -9
    10 + -1 = 9
    -10 + -1 = -11
    18446744073709551616 + 1 = 18446744073709551617
    -18446744073709551616 + -1 = -18446744073709551617
    -18446744073709551617 + -1 = -18446744073709551618
    1 + 'a' = 1
  DO

  @@'減算'@@auto_convert
  do Self.`-`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    #(省略)
  DO

  @@'乗算'@@auto_convert
  do Self.`*`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    #(省略)
  DO

  @@'除算'@@auto_convert
  do Self.`/`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    #(省略)
  DO

  @@'整数除算(計算結果の小数部分を切り捨てる)'@@auto_convert
  do Self.`\`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    #(省略)
  DO

  @@'剰余'@@auto_convert
  do Self.`%`@Number(left@Number@'左辺', right@Number@'
    ?
  spec
    #(省略)
  DO

  @@'累乗'@@auto_convert
  do Self.`^`@Number(left@Number@'左辺', right@Number@'右辺')
    ?
  spec
    #(省略)
  DO
CAN

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です